API Gestion Déclinaison répartir Quantité

Version ACE : 1.2  

Package : fr.ACE.metier.bc4j.produit.common

GestionDeclinaisonrepartirQuantite

   
Schémas d’entrée et de sortie : IN OUT

Cette API permet de répartir une quantité demandée sur l’ensemble des variantes existantes d’un produit de référence et de restituer en sortie :

Cette API tient également compte de l’assortiment d’un magasin.

API imbriquées : aucune.

Contraintes et limites de fonctionnement (hors périmètre)

Aucune.

Paramétrage (PPE)

TYPMAGARRVARREPVAR -

Processus, contrôles et règles de gestion

ETAPE DESCRIPTION DU PROCESSUS
Déclenchement

Le produit de référence doit être renseigné.

Etape 1

Vérification de l’existence du produit de référence

Le produit de référence doit exister dans la table PRO.

Les paramètres de sortie sont alimentés de la manière suivante :

  • produitReference = code produit,
  • quantiteCalculee = 0,
  • repart = Pourcentage de répartition.

Si un magasin est précisé en entrée (champ « sigpdv » renseigné) alors l’API calcule à nouveau cette répartition globale en cumulant la répartition des variantes produit qui sont dans l’assortiment du magasin.

Un produit existe dans l’assortiment d’un magasin s’il existe un couple magasin/variante produit dans la table PRC (le type de tiers doit correspondre à la valeur définie dans la zone A1 du paramètre TYPMAG).

Etape 2

Enregistrement des critères du modèle de déclinaison et des valeurs associées

L’API tient compte des enregistrements de la table ZODM correspondant au code société, au code modèle et dont la « Codification O/N » (champ codifi) est « O ». Les enregistrements sont triés par ordre croissant par numéro d'ordre de présentation (champ « ordzon »).

Pour chaque critère de déclinaison, l’API effectue le traitement suivant :

  • identification du code critère et de l’ordre de présentation,
  • identification, dans la table PRD des produits déclinés (multi-variantes), des valeurs reconnues par le produit de référence :
    • valeur du critère,
    • pourcentage de répartition,
    • quantité calculée (= 0), alimentée à l’étape n° 4.

Etape 3

Calcul et enregistrement du pourcentage (ou du ratio) de répartition par variante

Répartition par pourcentage

Cette étape a pour but de reconstituer les pourcentages par variante tels qu’on les affiche en fiche produit. Elle traite l’ensemble des variantes du produit de référence (table PRO) triées par ordre croissant du code produit.

Si un magasin est précisé en entrée de l’API (champ « sigpdv » renseigné) alors l’API ne retient que les variantes produits associées qui font partie de l’assortiment du magasin.

Pour chaque variante :

  • l’API alimente les informations suivantes :
    • code produit,
    • code unicité,
    • pourcentage de répartition,
    • code critères 1 à 3,
    • valeur dez critères 1 à 3.
  • l’API calcule et mémorise le pourcentage de répartition.

Le pourcentage de répartition de la dernière variante correspond à l’écart entre la somme des pourcentages de répartition des autres variantes et 100%.

Répartition par ratios

Si le mode de répartition des variantes est sous forme de ratios (champ « Pro.Repvar » = « 2 »), les ratios de chaque produit variante sont mémorisés. En revanche, pour le produit référence, la quantité totale des ratios des variantes assorties en magasin est à chaque fois calculée.

Lorsqu’un magasin a été précisé en entrée (« sigPDV » renseigné), alors seules sont retenues dans le traitement les variantes produits associées qui sont dans l’assortiment du magasin.

Un produit est considére comme faisant partie de l’assortiment d’un magasin lorsqu’il existe un couple « magasin/variante produit » dans la table des catalogues fournisseurs PRC. Cette table est consultée en utilisant les champs « codsoc », « typtie », « sigfou » (sigle magasin) et « codpro » (code produit). Le champ « typtie » doit contenir la valeur définie par la zone A1 du paramètre TYPMAG.

Pour chaque variante concernée, les ratios des produits variantes sont cumulés dans une variable « CumulRatios ».

Les paramètres suivants sont alimentés en sortie :
  • varianteProduit.codpro = pro.codpro
  • varianteProduit.codunic = pro.codunic
  • varianteProduit.repart = pro.repart
  • varianteProduit.codcrit1 = pro.codcrit1
  • varianteProduit.valcrit1 = pro.valcrit1
  • varianteProduit.codcrit2 = pro.codcrit2
  • varianteProduit.valcrit2 = pro.valcrit2
  • varianteProduit.codcrit3 = pro.codcrit3
  • varianteProduit.valcrit3 = pro.valcrit3

Etape 4.1

Si la quantité demandée en entrée est renseignée alors l’API effectue le traitement suivant pour chaque variante du produit.

Calcul de la quantité à répartir par variante (par pourcentage)

1. Calcul de la quantité à répartir

Quantité de la variante = pourcentage de répartition de variante X quantiteDemandee.

La quantité de la variante est arrondie selon l’algorithme ci-dessous (méthode existante « appliquerArrondi »).

  • Cas 1 : Si le paramètre ARRVAR n’est pas positionné ou si la zone N1 = 1 alors l’API pratique l’arrondi mathématique à l’entier le plus proche.
  • Cas 2 : Si la zone N1 du paramètre ARRVAR est égale à « 2 » alors l’API pratique l’arrondi inférieur selon un seuil d’arrondi défini dans la zone N2.
  • Cas 3 : Si la zone N1 du paramètre ARRVAR est égale à « 3 » alors l’API pratique l’arrondi supérieur selon un seuil d’arrondi défini par la zone N2.

2. Cumul de la quantité ainsi calculée sur chaque valeur de critère de la variante

3. Alimentation du paramètre en sortie « quantiteCalculee »

L’API y cumule la quantité calculée sur chaque variante.

Etape 4.2

Pour chaque variante produit, si le mode de répartition des variantes est sous forme de ratios (champ « Pro.Repvar » = « 2 ») :

Calcul de la quantité à répartir

Si la QuantitéDemandée est différente de 0 et est inférieure au cumul des ratios calculé (CumulRatios), alors la Quantité correspondant au ratio 1 est forcée à la valeur 1. Dans ce cas, l’API affiche un message d’information du type : « La quantité à demander doit obligatoirement avoir au minimum la valeur CumulRatios »

Calcul de la quantité à répartir pour le ratio de valeur 1

Quantité (ratio 1) = QuantitéDemandée / CumulRatios

La quantité pour le ratio de valeur 1 est arrondie selon l’algorithme ci-dessous (méthode « appliquerArrondi »).

  • Cas 1 : Si le paramètre ARRVAR n’est pas positionné ou si la zone N3 = 1 alors l’API pratique l’arrondi mathématique à l’entier le plus proche.
  • Cas 2 : Si la zone N3 du paramètre ARRVAR est égale à « 2 » alors l’API pratique l’arrondi inférieur selon un seuil d’arrondi défini dans la zone N4.
  • Cas 3 : Si la zone N3 du paramètre ARRVAR est égale à « 3 » alors l’API pratique l’arrondi supérieur selon un seuil d’arrondi défini par la zone N4.

Quantité de la variante produit = Quantité (ratio 1) X Ratio du produit variante

La quantité ainsi calculée est cumulée por chaque valeur de critère de la variante.

Le paramètre en sortie quantiteCalculee contient le cumul des quantités calculées pour chaque variante.

Critères d’entrée et de sortie

Paramètres en entrée :
  • produitReference : produit de référence (obligatoire)
  • codsoc : code société (facultatif)
    • Codpro (obligatoire)
  • quantiteDemandee : quantité demandée (facultatif)
  • sigPDV : sigle du magasin (facultatif))

Paramètres en sortie :
  • codsoc : code société
  • produitReference : produit de référence
  • quantiteDemandee : quantité demandée
  • sigPDV : sigle du magasin
  • quantiteCalculee : quantité calculée
  • repart : répartition d’appros
  • varianteProduit : pour chaque variante produit :
    • codpro : code produit
    • codunic : code unicité
    • codcrit1 : code critère 1
    • valcrit1 : valeur de critère 1
    • codcrit2 : code critère 2
    • valcrit2 : valeur de critère 2
    • codcrit3 : code critère 3
    • valcrit3 : valeur de critère 3
    • repart : répartition d’appros
    • quantiteCalculee : quantité calculée répartie
  • critereModele : pour chaque critère du modèle de déclinaison
    • codcrit : code du critère
    • ordzon : ordre du critère
    • valeurCritere : pour chaque valeur de critère
      • valcrit : valeur du critère
      • repart : répartition d’appros (prd.repart)
      • quantiteCalculee : totale quantité calculée repartie pour la valeur du critère

Trois critères au maximum dans le modèle : les critères doivent être restitués en sortie en respectant l’ordre de définition des critères dans le modèle (selon le champ « zodm.ordzon »).

Le nombre de valeurs pour un critère est illimité : les valeurs doivent être restituées en sortie en respectant l’ordre alphabétique croissant sur la valeur du critère.

L’unité d’expression de la quantité demandée n’est pas gérée par l’API car la répartition des quantités vers les variantes produit est indépendante de l’unité.

Exemple

Sur le produit de référence 10001 « Pantalon Homme », l’utilisateur a saisi une répartition d’approvisionnement. Le système a stocké les données dans la base comme suit :
Répartition d'appros en quantité
Total Calculé : 9700   S M L XL Total
    30 25 25 20  
Noir 20 600 500 500 400  
Gris 70 2100 1750 1750 1400  
Marron 10   250 250 200  
Total            

Tables mises à jour :

Pro(produit de référence).repart = 9700

Pro(variante S/NOI).repart = 600

Pro(variante S/GRI).repart = 2100

Pro(variante M/NOI).repart = 500

Pro(variante M/GRI).repart = 1750

Pro(variante M/MAR).repart = 250

Pro(variante L/NOI).repart = 500

Pro(variante L/GRI).repart = 1750

Pro(variante L/MAR).repart = 250

Pro(variante XL/NOI).repart = 400

Pro(variante XL/GRI).repart = 1400

Pro(variante XL/MAR).repart = 200

Prd(Taille/S).repart = 30

Prd(Taille/M).repart = 25

Prd(Taille/L).repart = 25

Prd(Taille/XL).repart = 20

Prd(Couleur/NOI).repart = 20

Prd(Couleur/GRI).repart = 70

Prd(Couleur/MAR).repart = 10

L’utilisateur, connecté sur le site de Marseille, ajoute le produit de référence 10001 sur une commande d’achat. Il saisit une quantité de 7000 sur le produit de référence.

Le système appelle l’API creerPoste qui utilise l’API repartirQuantite :

Paramètres en entrée :

codsoc : code société (facultatif)

produitReference : 10001

quantiteDemandee : 1500

sigPDV : MARSEILLE

Algorithme :

Pour déterminer les paramètres en sortie, le système exécute les traitements suivants :

Etape 3 de l’algorithme ci-dessus :

La matrice de répartition en quantité du produit de référence est réduite aux variantes assorties dans le magasin MARSEILLE. Le magasin de Marseille qui ne gère pas la taille S :

Répartition d'appros en quantité
Total Calculé : 7000   S M L XL Total
             
Noir     500 500 400  
Gris     1750 1750 1400  
Marron     250 250 200  
Total            

La matrice des pourcentages associés est la suivante :
Répartition d'appros en pourcentage
Total Calculé : 7000   S M L XL Total
    30 25 25 20  
Noir 20   500/7000=7,14% 500/7000=7.14% 400/7000=5.71%  
Gris 70   1750/7000=25% 1750/7000=25% 1400/7000=20%  
Marron 10   250/7000=3.57% 250/7000=3.57% 200/7000=2.87%  
Total            

7000 = somme des quantités des variantes assorties.

On calcule pour la taille M couleur noir mais 500/7000 = 0.07142857… * 100 puis arrondi à 2 décimales après la virgule = 7.14%

Pour la dernière variante taille XL couleur Marron :

% = 100 – (7 .14 + 7.14 + 5.71 + 25 + 25 + 20 + 3.57 + 3.57) = 2.87 %

Etape 4 de l’algorithme ci-dessus :

A partir de la matrice des pourcentages, on calcule la quantité à commander par variante retenue. On choisit le mode avec la quantité à commander arrondie à l’entier le plus proche.

Répartition d'appros en pourcentage
Total Calculé : 1502   S M L XL Total
    30 25 25 20  
Noir 20   1500*7,14%=107.00 1500*7.14%=107.00 1500*5.71%=86.00  
Gris 70   1500*25%=375.00 1500*25%=375.00 1500*20%=300.00  
Marron 10   1500*3.57%=54.00 1500*3.57%=54.00 1500*2.87%=44.00  
Total            

Paramètres en sortie :

  • codsoc : code société
  • produitReference : 100001
  • quantiteDemandee : 1500
  • sigPDV : MARSEILLE
  • quantiteCalculee : 1502
  • repart : 7000
  • varianteProduit : pour chaque variante produit :
  • codpro : code produit
  • codunic : code unicité
  • codcrit1 : code critère 1
  • valcrit1 : valeur de critère 1
  • codcrit2 : code critère 2
  • valcrit2 : valeur de critère 2
  • codcrit3 : code critère 3
  • valcrit3 : valeur de critère 3
  • repart : répartition d’appros
  • quantiteCalculee : quantité calculée répartie
Codpro Codunic repart Codcrit1 Valcrit1 Codcrit1 Valcrit2 quantiteCalculee
10001MNOI 10001@M@NOI 500 VAR101 M VAR102 NOI 107
10001LNOI 10001@L@NOI 500 VAR101 L VAR102 NOI 107
10001XLNOI 10001@XL@NOI 400 VAR101 XL VAR102 NOI 86
10001MGRI 10001@M@GRI 1750 VAR101 M VAR102 GRI 375
10001LGRI 10001@L@GRI 1750 VAR101 L VAR102 GRI 375
10001XLGRI 10001@XL@GRI 1400 VAR101 XL VAR102 GRI 300
10001MMAR 10001@M@MAR 250 VAR101 M VAR102 MAR 54
10001LMAR 10001@L@MAR 250 VAR101 L VAR102 MAR 54
10001XLMAR 10001@XL@MAR 200 VAR101 XL VAR102 MAR 44
  • critereModele : pour chaque critère du modèle de déclinaison
  • codcrit : code du critère
  • ordzon : ordre du critère
  • valeurCritere : pour chaque valeur de critère
  • valcrit : valeur du critère
  • repart : répartition d’appros (prd.repart)
  • quantiteCalculee : totale quantité calculée repartie pour la valeur du critère
Codcrit Ordzon valcrit repart quantiteCalculee
VAR101 1 S 30 0
VAR101 1 M 25 107 + 375 + 54 = 536
VAR101 1 L 25 107 + 375 + 54 = 536
VAR101 1 XL 20 86 + 300 + 44 = 430
VAR102 2 NOI 20 107 + 107 + 86 = 300
VAR102 2 GRI 70 375 + 375 + 300 = 1050
VAR102 2 MAR 10 54 + 54 + 44 = 152