Personnalisation des frais d'expédition
Dans certains cas, vous devrez peut-être personnaliser votre calcul d'expédition. Par exemple, si un article et son produit parent se trouvent dans des catégories différentes et que chaque catégorie a un code de calcul d'expédition différent, les deux codes de calcul d'expédition seront repris par l'exécution, et le résultat final sera cumulatif. Pour éviter cela, vous pouvez personnaliser le code, en remplaçant CalculationCodeCombineCmdImpl.getIndirectlyAttachedCodes().
Procédure
- Créez une instruction de tâches qui étend CalculationCodeCombineCmd. Par exemple,
public interface EGShippingCalculationCodeCombineCmd extends CalculationCodeCombineCmd { public static final String defaultCommandClassName = "com.example.commerce.order.calculation.EGShippingCalculationCodeCombineCmd Impl"; } - Créez une implémentation de l'instruction de tâche qui étend CalculationCodeCombineCmdImpl. Par exemple,
EGShippingCalculationCodeCombineCmdImpl extends CalculationCodeCombineCmdImpl implements EGShippingCalculationCodeCombineCmd { } - Étendez le comportement par défaut de getIndirectlyAttachedCodes(Item) pour filtrer les codes de calcul d'expédition étrangers. Par exemple,
protected CalculationCodeAccessBean[] getIndirectlyAttachedCodes(Item iItem) { CalculationCodeAccessBean[] abCodes = super.getIndirectlyAttachedCodes(iItem); //if the array contains both the product and item level shipping calculation codes, get rid of the product level one return abCodes; } - Enregistrez cette instruction de tâche comme méthode de calcul dans la table CALMETHOD. Par exemple,
INSERT INTO CALMETHOD VALUES (some unique ID, -1, -2, 'com.example.commerce.order.calculation.EGShippingCalculationCodeCombineCmd ', 'EG custom CalculationCodeCombine for shipping', 1, 'EGShippingCalculationCodeCombine') - Définissez la méthode de calcul comme méthode de calcul CalculationCodeCombine pour l'expédition :
UPDATE STENCALUSG SET ACTCC_CALMETHOD_ID=calculation methodID WHERE STOREENT_ID IN (store ID, -1) AND CALUSAGE_ID=-2Remarque : Ne personnalisez pas CalculationHelper.getProductAndItemIds(nCatalogEntryId).