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

  1. 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"; 
    } 
    
  2. Créez une implémentation de l'instruction de tâche qui étend CalculationCodeCombineCmdImpl. Par exemple,
    
    EGShippingCalculationCodeCombineCmdImpl extends 
    CalculationCodeCombineCmdImpl implements 
    EGShippingCalculationCodeCombineCmd { 
    } 
    
  3. É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; 
    } 
    
  4. 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') 
    
  5. 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=-2
    
    Remarque : Ne personnalisez pas CalculationHelper.getProductAndItemIds(nCatalogEntryId).