Personalización de los cargos de envío

Es posible que en algunos casos necesite personalizar el cálculo de cargos de envío. Por ejemplo, si un artículo y el producto padre están bajo categorías diferentes y cada categoría tiene adjunto un código de cálculo de cargos de envío diferente, la ejecución elegirá ambos códigos de cálculo de cargos de envío y el resultado final será acumulativo. Para evitar esto, puede personalizar el código, alterando CalculationCodeCombineCmdImpl.getIndirectlyAttachedCodes().

Procedimiento

  1. Cree un mandato de tarea que amplíe CalculationCodeCombineCmd. Por ejemplo,
    
    public interface EGShippingCalculationCodeCombineCmd extends 
    CalculationCodeCombineCmd { 
    public static final String defaultCommandClassName = 
    "com.example.commerce.order.calculation.EGShippingCalculationCodeCombineCmd
    
    Impl"; 
    } 
    
  2. Cree una implementación del mandato de tarea que amplíe CalculationCodeCombineCmdImpl. Por ejemplo,
    
    EGShippingCalculationCodeCombineCmdImpl extends 
    CalculationCodeCombineCmdImpl implements 
    EGShippingCalculationCodeCombineCmd { 
    } 
    
  3. Amplíe el comportamiento predeterminado de getIndirectlyAttachedCodes(Item) para filtrar los códigos de cálculo de cargos de envío externos. Por ejemplo,
    
    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. Registre el mandato de tarea como método de cálculo en la tabla CALMETHOD. Por ejemplo,
    
    INSERT INTO CALMETHOD VALUES (some unique ID, -1, -2, 
    'com.example.commerce.order.calculation.EGShippingCalculationCodeCombineCmd
    
    ', 'EG custom CalculationCodeCombine for shipping', 1, 
    'EGShippingCalculationCodeCombine') 
    
  5. Establezca el método de cálculo como el método de cálculo CalculationCodeCombine para el envío:
    
    UPDATE STENCALUSG SET ACTCC_CALMETHOD_ID=calculation methodID WHERE 
    STOREENT_ID IN (store ID, -1) AND CALUSAGE_ID=-2
    
    Nota: No personalice CalculationHelper.getProductAndItemIds(nCatalogEntryId).