Règles de calcul
La structure de calcul HCL Commerce sépare l'objet qui indique le calcul à effectuer pour un article de la commande (code de calcul) de l'objet ou des objets responsables du calcul, appelé règle de calcul.
Séparer la règle de calcul du code de calcul offre plus de flexibilité et facilite la personnalisation par rapport au fait d'avoir le code de calcul qui effectue les calculs directement. En séparant les règles de calcul des codes de calcul, vous pouvez avoir de nombreuses règles de calcul pour un code de calcul. Ces règles de calcul multiples peuvent être combinées, en leur donnant un ordre de priorité et en les limitant à des groupes de membres spécifiques. Les règles de calcul pour le calcul des frais de port et des taxes peuvent également être restreintes en fonction des juridictions.
Par exemple, si vous avez un magasin qui expédie des produits dans un certain nombre de juridictions dans lesquelles vous devez percevoir la taxe sur les ventes et qu'il existe diverses taxes sur les ventes dans chaque juridiction, vous effectueriez les étapes suivantes :
- Créez un code de calcul de la taxe sur les ventes et associez-le aux entrées de catalogue pour les produits soumis à cette taxe.
- Pour chaque juridiction dans laquelle vous devez percevoir des taxes sur les ventes, créez une règle de calcul pour calculer chaque taxe sur les ventes pour la juridiction. Chaque règle de calcul doit être associée aux attributs suivants :
- Une catégorie de taxe
- Une juridiction fiscale
- Le code de calcul de la taxe sur les ventes
Le code de calcul de la taxe sur les ventes calcule les montants pour les catégories de taxe all, en ayant plusieurs règles de calcul, une pour chaque catégorie. Une règle de calcul calcule un montant pour une catégorie de taxe particulière.
Si vous souhaitez que votre magasin expédie des produits dans une nouvelle juridiction dans laquelle vous devez percevoir des taxes sur les ventes, vous n'avez pas à créer un nouveau code de calcul et à l'associer à l'article de la commande. Vous pouvez créer de nouvelles règles de calcul et les associer aux catégories de taxe appropriées, à la nouvelle juridiction fiscale et au code de calcul existant.
Les propriétés des règles de calcul sont définies dans la table de base de données CALRULE. La section suivante traite de ce tableau et d'autres tables de base de données qui affectent l'utilisation des règles de calcul.
Tables de base de données pour les règles de calcul
Des informations sur les règles de calcul sont fournies dans les tableaux de base de données HCL Commerce suivants :
- CALRULE
- Définit des règles de calcul.
- CALRULEMGP
- Associe une règle de calcul à un groupe de membres. L'association d'un groupe de membres à une règle de calcul vous permet d'autoriser uniquement certains groupes de membres à utiliser la règle de calcul.
- SHPJCRULE
- Peut être utilisée par la méthode de calcul ShippingCalculationRuleQualify pour choisir une règle de calcul basée sur le mode d'expédition et le centre de distribution lorsque l'adresse de livraison correspond à l'une des juridictions d'expédition dans un groupe de juridictions d'expédition particulier.
- STENCALUSG
- Spécifie la sous-classe de la méthode de calcul CalculRuleCombine qui détermine comment combiner plusieurs règles de calcul pour un article de la commande.
- TAXJCRULE
- Peut être utilisée par une méthode de calcul TaxCalculationRuleQualify pour choisir une règle de calcul lors de l'expédition depuis un centre de distribution à une adresse de livraison qui correspond à l'une des juridictions fiscales d'un groupe de juridictions fiscales particulier.
Les sections suivantes traitent des attributs clés des règles de calcul stockés dans certaines des tables de base de données.
Diagrammes de modèles de données des règles de calcul
Les diagrammes de modèles de données suivants illustrent les relations entre les tables de base de données qui sont utilisées pour définir les règles de calcul génériques, les règles de calcul des remises, les règles de calcul des livraisons et les règles de calcul des taxes.
Méthodes de calcul pour les règles de calcul
Trois sous-classes de méthodes de calcul sont associées aux règles de calcul :
- CalculationRuleCombine
- CalculationRuleQualify
- CalculationRuleCalculate
Cette section traite de ces sous-classes et des implémentations par défaut fournies par HCL Commerce.
Méthode de calcul CalculRuleCombine
CalculRuleCombine détermine quelles règles de calcul sont utilisées pour calculer les montants monétaires pour la liste des articles de la commande qui est transmise à la méthode de calcul CalculRuleCombine par la méthode de calcul CalculCodeCalculate.
La méthode CalculationRuleCombine renvoie une liste qui inclut les éléments suivants :
- Une règle de calcul
- Une liste des OrderItems auxquels s'applique la règle de calcul
- Une liste des montants monétaires correspondant à chaque article
Pour les calculs des taxes, les montants monétaires correspondant à chaque article peuvent être répartis dans le montant de chaque catégorie de taxe applicable.
Toutes les commandes utilisées comme méthodes de calcul CalculationRuleCombine doivent implémenter l'interface CalculationRuleCombineCmd.
La commande CalculationRuleCombineCmdImpl, fournie avec HCL Commerce, met en œuvre l'interface CalculationRuleCombineCmd.
CalculRuleCombineCmdImple
Il s'agit de l'implémentation par défaut de la commande CalculationRuleCombine.
Cette commande est appelée par la méthode de calcul CalculCodeCalculate pour identifier les règles de calcul associées aux articles de la commande. A partir d'une liste d'articles de la commande, d'un code de calcul et d'une liste facultative de catégories de taxes, cette commande exécute les tâches suivantes :
- A l'aide de l'utilisation de calcul en cours de traitement, du code de calcul et des catégories de taxes facultatives, la commande CalculationRuleCombineCmdImpl crée une liste de règles de calcul qui peuvent être appliquées aux articles de la commande. La sélection des règles de calcul est basée sur le code de calcul et les catégories de taxes facultatives.
- La commande trie ensuite les règles de calcul dans l'ordre croissant selon les attributs de séquence du calcul de leurs catégories de taxes (TAXCGRY.CALCULATIONSEQ). Les règles de calcul avec la même catégorie de taxe sont triées dans l'ordre croissant selon leur attribut de séquence. Les règles de calcul sans catégories de taxes sont triées dans l'ordre croissant par leur attribut de séquence.
- Si l'attribut indicateur de qualification de la règle de calcul est défini sur 1, la méthode de calcul CalculrRuleQualify pour chaque règle de calcul est appelée pour déterminer les articles de la commande auxquels s'applique chaque règle de calcul. La méthode de calcul CalculRuleQualify renvoie une liste d'OrderItems à laquelle la s'applique règle de calcul.
- Pour chaque règle de calcul et chaque liste d'articles de la commande renvoyées par la méthode de calcul CalculRuleQualify (ou tous les articles, si cette méthode n'a pas été appelée), la commande appelle la méthode de calcul CalculationRuleCalculate. CalculRuleCalculate renvoie un montant monétaire pour chaque article.
- Lorsque toutes les règles de calcul ont été traitées, les montants monétaires de différentes règles de calcul pour chaque article de la commande sont combinés comme suit :
- Les montants monétaires pour les règles de calcul avec un attribut de combinaison inAdditionTo sont ajoutés.
- Pour chaque règle de calcul qui a un attribut de combinaison inCombinationWith, la somme des montants monétaires calculés pour la règle de calcul et le total de l'étape 5a sont ajoutés.
- Tous les montants monétaires pour les règles de calcul avec un attribut de combinaison inCombinationWith sont ajoutés au total de l'étape 5a.
- Tous les résultats obtenus à l'étape 5b (il y a un résultat pour chaque règle notInCombinationWith) et le résultat obtenu à l'étape 5c sont comparés. Le montant monétaire le plus bas est considéré comme le montant monétaire valide.
- Les règles de calcul utilisées pour calculer le montant monétaire valide, les montants monétaires produits par chacune de ces règles de calcul et leurs OrderItems associés sont renvoyés à la méthode d'appel.
Méthode de calcul CalculRuleQualifier
La méthode de calcul CalculationRuleQualify vérifie si une règle de calcul s'applique à la liste des articles de la commande et renvoie une liste d'éléments. Chaque élément est un groupe d'articles de la commande qui doivent être traités ensemble par la règle de calcul.
Les méthodes de calcul CalculationRuleQualify ne sont appelées que si l'attribut indicateur de qualification de la règle de calcul est défini sur 1.
Toutes les commandes utilisées comme méthode CalculationRuleQualify doivent implémenter l'interface CalculalRuleQualifyCmd.
Les commandes suivantes implémentent l'interface CalculalRuleQualifyCmd et sont fournies avec HCL Commerce :
- DiscountCalculationRuleQualifyCmdImpl
- ShippingCalculationRuleQualifyCmdImpl
- TaxCalculationRuleQualifyCmdImpl
DiscountCalculationRuleQualifyCmdImpl
Il s'agit de la version de la commande CalculationRuleQualify pour les remises. Elle implémente l'interface DiscountCalculationRuleQualifyCmd qui étend l'interface CalculationRuleQualifyCmd.
Cette commande renvoie les articles de la commande avec un client dans l'un des groupes de membres qui sont associés à la règle de calcul et reconnus par le magasin. Si le client n'est dans aucun de ces groupes de membres, cette commande renvoie la valeur null.
Les règles de calcul sont associées aux groupes de membres de la table de base de données CALRULEMGP et les groupes de membres sont reconnus par les magasins de la table de base de données STOREMBRGP.
ShippingCalculationRuleQualifyCmdImpl
Il s'agit de la version de la commande CalculalRuleQualify pour la livraison. Elle implémente l'interface ShippingCalculationRuleQualifyCmd qui étend l'interface CalculationRuleQualifyCmd.
Cette commande compare les juridictions d'expédition, les modes d'expédition et les centres de distribution des articles de la commande avec ceux associés à une règle de calcul. La commande ShippingCalculationRuleQualifyCmdImple renvoie uniquement les articles de la commande qui partagent les juridictions d'expédition, les modes d'expédition et les centres de distribution avec la règle de calcul.
Lorsque l'adresse de livraison de l'OrderItem appartient à plus d'un groupe de juridictions d'expédition, pour le même centre de distribution et le même mode d'expédition, la règle de calcul ayant la valeur de priorité la plus élevée définie dans la base de données SHPJCRULE est admissible. Si plusieurs règles de calcul partagent la valeur de priorité la plus élevée, toutes les règles de calcul partageant les valeurs de priorité les plus élevées s'appliquent.
Les règles de calcul sont associées aux juridictions d'expédition, aux modes d'expédition et aux centres de distribution dans la table de base de données SHPJCCRULE.
TaxCalculationRuleQualifyCmdImpl
Il s'agit de la version de la commande CalculationRuleQualify pour les taxes. Elle implémente l'interface TaxCalculationRuleQualifyCmd qui étend l'interface CalculationRuleQualifyCmd.
Cette commande compare les juridictions fiscales et les centres de distribution des articles de la commande avec une règle de calcul. La commande TaxCalculationRuleQualifyCmdImple ne renvoie que les articles qui partagent les juridictions fiscales et les centres de distribution avec une règle de calcul.
Lorsque l'adresse de livraison de l'OrderItem appartient à plus d'un groupe de juridictions fiscales pour le même centre de distribution, la règle de calcul ayant la valeur de priorité la plus élevée définie dans la table de base de données TAXJCRULE s'applique. Si plusieurs règles de calcul partagent la valeur de priorité la plus élevée, toutes les règles de calcul partageant les valeurs de priorité les plus élevées s'appliquent.
Les règles de calcul sont associées aux juridictions fiscales et aux centres de distribution dans la table de base de données TAXJCRULE.
Méthode de calcul CalculationRuleCalculate
Cette commande est appelée par la méthode de calcul CalculationRuleCombine pour calculer le résultat d'une règle de calcul particulière. Pour une règle de calcul et une liste d'articles de commande, cette commande renvoie un montant monétaire pour chaque article. La devise du montant monétaire calculé est la devise de la commande.
Les méthodes de calcul CalculationRuleCalculate doivent implémenter l'interface CalculationRuleCalculateCmd.
La commande CalculationRuleCalculateCmdImpl, fournie avec HCL Commerce implémente l'interface CalculationRuleCalculateCmd.
CalculationRuleCalculateCmdImpl
Il s'agit de l'implémentation par défaut de la commande CalculationRuleCalculate.
À l'aide d'une règle de calcul et d'une liste d'OrderItems, cette commande exécute les tâches suivantes :
- Efface le montant monétaire associé aux articles de la commande traités avec la règle de calcul.
- Détermine la liste des échelles de calcul associées à la règle de calcul à l'aide de la table de base de données CRULESCALE.
- Traite les échelles de calcul qui ne sont associées à aucune devise en procédant aux étapes suivantes :
- Obtient un résultat monétaire dans la devise de la commande, pour chaque article de la commande, à l'aide de l'échelle de calcul. Pour plus de détails sur cette étape, voir Utilisation des échelles de calcul et des fourchettes de calcul.
- Ajoute le résultat du montant monétaire au résultat total, pour chaque article.
- Assemble une liste des devises auxquelles sont associées les échelles de calcul restantes.
- Effectue une des étapes suivantes :
- Si la liste des devises de l'échelle de calcul contient la devise de la commande :
- Commence par un résultat candidat de zéro pour chaque article de la commande.
- Pour chaque échelle de calcul avec la même devise que la commande, effectue les étapes suivantes :
- Obtient un montant monétaire pour chaque article de la commande. Pour plus de détails sur cette étape, voir Utilisation des échelles de calcul et des fourchettes de calcul.
- Ajoute le montant monétaire de chaque article au résultat candidat de chaque article.
- Si la liste des devises de l'échelle de calcul ne contient pas la devise de la commande :
- Pour chaque devise de la liste :
- Commence par un résultat candidat de zéro pour chaque article de la commande.
- Pour chaque échelle de calcul avec la devise en cours de traitement, elle effectue les étapes suivantes :
- Obtient un montant monétaire pour chaque article. Pour plus de détails sur cette étape, voir Utilisation des échelles de calcul et des fourchettes de calcul.
- Ajoute le montant monétaire de chaque article à son résultat candidat.
- Compare la somme des résultats candidats pour chaque devise. Les résultats candidats pour la devise produisant la somme la plus basse sont considérés comme valides. Les résultats candidats des autres devises sont rejetés.
- Pour chaque devise de la liste :
- Si la liste des devises de l'échelle de calcul contient la devise de la commande :
- Pour chaque article de la commande, ajoute le montant calculé à l'étape 3 et le résultat candidat à partir de l'étape 5.
- Renvoie les résultats à la méthode d'appel.
Des informations sur la façon d'obtenir des montants monétaires à partir des échelles de calcul ainsi que les méthodes de calcul qui s'appliquent aux échelles de calcul sont fournies dans la rubrique Utilisation des échelles de calcul et des fourchettes de calcul.
Utilisation des règles de calcul
L'implémentation de la méthode de calcul CalculationCodeCalculate par défaut utilise des règles de calcul pour calculer les montants monétaires de chaque article auquel elle s'applique. L'implémentation CalculationCodeCalculate par défaut appelle la méthode de calcul CalculationRuleCombine et lui passe la liste des OrderItems applicables. L'implémentation par défaut de CalculationRuleCombine effectue les étapes suivantes :
- Détermine la liste des règles de calcul qui sont efficaces pour le code de calcul en vérifiant l'attribut CALRULE.FLAGS et en appelant une méthode de calcul CalculationRuleQualify si l'indicateur est défini.
- Pour chaque règle de calcul applicable, elle effectue le calcul défini par la règle pour chaque article de la commande auquel s'applique la règle. Si le calcul à effectuer est basé sur la recherche d'une valeur dans une échelle, les échelles de calcul sont utilisées pour obtenir le montant monétaire. Les échelles de calcul sont couvertes dans la rubrique Utilisation des échelles de calcul et des fourchettes de calcul.
- Lorsque toutes les règles ont été calculées pour tous les articles, elle combine les résultats du calcul pour chaque article. L'attribut de combinaison de la règle de calcul contrôle la combinaison des résultats.
- La méthode de calcul CalculationRuleCombine renvoie une liste des règles de calcul qui ont été appliquées, les articles de la commande auxquels elles ont été appliquées et le montant monétaire résultant pour chaque article de la commande. Cette liste est envoyée à la méthode de calcul d'appel CalculationCodeCalculate.