DECOMPOSE_UN_COMPOSE (Fonction)


Paramètres : GRREF , QTEDEMANDEE , UNITEDEMANDEE, F, SANSREF, CBN, TESTSTOCK, CONTRAINTESPROD, IGNORERSTOCKGROUP, ESTCREATIONREELLE
Cette fonction parcourt la nomenclature d'un article composé « GRREF » pour déterminer les besoins nécessaires pour fabriquer QTEDEMANDEE dans une unité.
L'entête de nomenclature (BA) doit être chargé avant l'appel de cette fonction !
Si utilisé en mode reel, il faut que g6.depo, g6.nst, g6.status, g6.offam soient renseignes !
Le paramètre IgnorerStockGroupindique une décomposition en ignorant certains paramètres : pas de Stock, pas de CBN, BB.OFGRPCOD=1 et BA.OFGCOD=2
LE paramètre estCreationReelleindique si l'on crée un VRAI OF (pour application des règles de découpage par lot)
La fonction renvoie :
0 = Ok
2 = Erreur partage nomenclature
Partager le composéNiveau = 1
Libérer le composéNiveau = Niveau - 1OuiOuiNonOF généré en auto ?NonNonNonNonPartager le composéNiveau = Niveau + 1OuiOuiOuiArticle fictif ?Remonter d'un niveauFin du traitementNiveau supérieur à 1 ?Fin du niveau courant ?Article composé ?Descendre d'un niveauCalculer le besoinLire le composant Pour chaque événement (nouveau composé, remontée vers le niveau supérieur, ...) une procédure ou une fonction est appelée. Cette procédure / fonction externe est lue dans le module HARMONY.DEFPMODULE.

Evénement

Type

Procédure / fonction externe

Détection d'une boucle infinie dans la nomenclature

Proc

Boucle_Infinie(GRREF)
GRREF: référence qui provoque la boucle infinie

Avant le chargement d'un composant

Proc

Composant_Chargement_Av(NIVREEL, F)
NIVREEL: niveau courant de la nomenclature
F: True = substitution ok, False = substitution en erreur

Après le chargement d'un composant

Proc

Composant_Chargement_Ap(NIVREEL, NIV, QTE, UNIT, F, TICKETRES)
NIVREEL: niveau courant de la nomenclature
NIV: niveau en comptant les articles fictifs comme niveau
QTE: Besoin
UNIT: Unité du besoin
F: True = composant lui même composé
TICKETRES : Numéro du ticket de réservation si semi fini et ordre de fabrication géré sur stock

Avant la remontée vers le niveau de nomenclature supérieur

Proc

Compose_Retour_Av(NIVREEL)
NIVREEL: Niveau courant de la nomenclature

Lors d'un échec de partage d'article composé

Proc

Partage_Erreur(TYPELIGNE)
TYPELIGNE: 0 = En-tête, 1 = Ligne

Lors d'une perte de précision ou d'une quantité trop élevée dans le calcul du besoin (après tentative de changement d'unité)

Proc

OverFlow_Erreur(GRREF)
GRREF: référence qui provoque l'erreur

Après le chargement d'un composé

Fonc

Compose_Chargement_Ap(NIVREEL, NIV, QTE, UNIT, QTECOMPOSANT, TICKETRES)
NIVREEL: niveau courant de la nomenclature
NIV: niveau en comptant les articles fictifs comme niveau
QTE: Quantité demandée
UNIT: Unité de la demande
QTECOMPOSANT : Quantité du composant (semi fini)
TICKETRES : Numéro du ticket de réservation si semi fini et ordre de fabrication géré sur stock

Retour: 0 = Poursuite de l'exploration
: 1 = Arrêt de l'exploration du niveau courant (remontée)
:2 = Arrêt de l'exploration de toute la nomenclature



Après le chargement d'un article fictif

Fonc

Compose_Fictif_Chargement_Ap(NIVREEL, NIV, QTE, UNIT, QTECOMPOSANT)
NIVREEL: niveau courant de la nomenclature
NIV: niveau en comptant les articles fictifs comme niveau
QTE: Quantité demandée
UNIT: Unité de la demande
QTECOMPOSANT : Quantité du composant (semi fini)

Retour: 0 = Poursuite de l'exploration
: 1 = Arrêt de l'exploration du niveau courant (remontée)
: 2 = Arrêt de l'exploration de toute la nomenclature


Cette fonction utilise les tableaux suivants :

  1. G3XT.IDTABLEAU (31) pour stocker les nomenclatures / gammes qui sont encours de partage. Une gamme peut être commune à x nomenclatures, il ne faut donc pas libérer cette gamme tout le temps. Ce tableau comptabilise le nombre de partage d'une gamme et libère quand le compteur est à 0.1 PartBA 50

2 PType 1,0; 1=nomenclature, 2 =gamme
2 PGrref >GTFDD GRREF; Référence partagée
2 PCompteur 3,0; Compteur de partage

  1. G3XT.IDTABLEAU (32) avec l'enregistrement GH. Ce tableau stocke les « nœuds » de l'arbre en cours d'exploration pour pouvoir remonter au niveau supérieur et continuer la lecture.
  2. G3XT.IDTABLEAU (33) avec l'enregistrement G6T2. Ce tableau stocke les en-têtes d'articles composés lus pendant le parcourt d'une nomenclature. Cela évite de rechercher x fois le même en-tête dans les fichiers.
  3. G3XT.IDTABLEAU (34) avec l'enregistrement G6T3. Ce tableau stock les couples composé - composant pour pouvoir tester les boucles infinies.

Si TestStock = True, la fonction va vérifier le stock des nomenclatures secondaires si leur mode de gestion est à « sur stock » ou « mixte ». La fonction génèrera un ordre de fabrication secondaire si le stock du semi-fini est insuffisant (en prenant la différence entre le besoin et le stock). Dans le cas contraire, l'ordre de fabrication secondaire n'est pas généré. Si le semi fini contient du stock, le programme crée une réservation pour l'ordre de fabrication.