以编程方式更改产品的价格?

2020-09-04 08:08发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


如何从Java代码更改产品价格?例如,如果我有ProductModel,请在将产品添加到购物车之前说一下

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


如何从Java代码更改产品价格?例如,如果我有ProductModel,请在将产品添加到购物车之前说一下

付费偷看设置
发送
11条回答
clasier
1楼 · 2020-09-04 08:58.采纳回答

如果可以避免的话,最好不要使用子类型,这会使您的代码更加脆弱。 您可以在任何扩展名中添加类,但必须将其添加到src中,而不是web/src目录中,以确保由全局类加载器加载。

 公共类MyPriceFactory实现PriceFactory
  {
 
      私有最终PriceFactory originalPriceFactory = Europe1PriceFactory.getInstance();
 
    /*
       *(非Javadoc)
       *
       * @看到
       * de.hybris.platform.jalo.order.price.PriceFactory#getAllPriceInformations(de.hybris.platform.jalo.SessionContext,
       * de.hybris.platform.jalo.product.Product,java.util.Date,boolean)
       */
      @Override
      public ProductPriceInformations getAllPriceInformations(最终SessionContext paramSessionContext,最终产品paramProduct,
              final Date paramDate,final boolean paramBoolean)引发JaloPriceFactoryException
      {
          返回originalPriceFactory.getAllPriceInformations(paramSessionContext,paramProduct,paramDate,paramBoolean);
      }
 
    /*
       *(非Javadoc)
       *
       * @看到
       * de.hybris.platform.jalo.order.price.PriceFactory#getBasePrice(de.hybris.platform.jalo.order.AbstractOrderEntry)
       */
      @Override
      公共PriceValue getBasePrice(final AbstractOrderEntry paramAbstractOrderEntry)引发JaloPriceFactoryException
      {
         //在这里实现自定义逻辑
          返回null;
      }
 
    /*
       *(非Javadoc)
       *
       * @看到
       * de.hybris.platform.jalo.order.price.PriceFactory#getDiscountValues(de.hybris.platform.jalo.order.AbstractOrderEntry
       *)
       */
      @Override
      公共列表getDiscountValues(final AbstractOrderEntry paramAbstractOrderEntry)引发JaloPriceFactoryException
      {
          返回originalPriceFactory.getDiscountValues(paramAbstractOrderEntry);
      }
 
    /*
       *(非Javadoc)
       *
       * @看到
       * de.hybris.platform.jalo.order.price.PriceFactory#getDiscountValues(de.hybris.platform.jalo.order.AbstractOrder)
       */
      @Override
      公共列表getDiscountValues(final AbstractOrder paramAbstractOrder)引发JaloPriceFactoryException
      {
          返回originalPriceFactory.getDiscountValues(paramAbstractOrder);
      }
 
    /*
       *(非Javadoc)
       *
       * @看到
       * de.hybris.platform.jalo.order.price.PriceFactory#getProductDiscountInformations(de.hybris.platform.jalo.SessionContext
       *,de.hybris.platform.jalo.product.Product,java.util.Date,布尔值)
       */
      @Override
      公共列表getProductDiscountInformations(最终SessionContext paramSessionContext,最终产品paramProduct,
              final Date paramDate,final boolean paramBoolean)引发JaloPriceFactoryException
      {
          返回originalPriceFactory.getProductDiscountInformations(paramSessionContext,paramProduct,paramDate,paramBoolean);
      }
 
    /*
       *(非Javadoc)
       *
       * @看到
       * de.hybris.platform.jalo.order.price.PriceFactory#getProductPriceInformations(de.hybris.platform.jalo.SessionContext
       *,de.hybris.platform.jalo.product.Product,java.util.Date,布尔值)
       */
      @Override
      公共列表getProductPriceInformations(最终SessionContext paramSessionContext,最终产品paramProduct,
              final Date paramDate,final boolean paramBoolean)引发JaloPriceFactoryException
      {
          返回originalPriceFactory.getProductPriceInformations(paramSessionContext,paramProduct,paramDate,paramBoolean);
      }
 
    /*
       *(非Javadoc)
       *
       * @看到
       * de.hybris.platform.jalo.order.price.PriceFactory#getProductTaxInformations(de.hybris.platform.jalo.SessionContext,
       * de.hybris.platform.jalo.product.Product,java.util.Date)
       */
      @Override
      公共列表getProductTaxInformations(最终SessionContext paramSessionContext,最终产品paramProduct,
              final Date paramDate)引发JaloPriceFactoryException
      {
          返回originalPriceFactory.getProductTaxInformations(paramSessionContext,paramProduct,paramDate);
      }
 
    /*
       *(非Javadoc)
       *
       * @看到
       * de.hybris.platform.jalo.order.price.PriceFactory#getTaxValues(de.hybris.platform.jalo.order.AbstractOrderEntry)
       */
      @Override
      公共集合getTaxValues(final AbstractOrderEntry paramAbstractOrderEntry)引发JaloPriceFactoryException
      {
          返回originalPriceFactory.getTaxValues(paramAbstractOrderEntry);
      }
 
    /*
       *(非Javadoc)
       *
       * @请参阅de.hybris.platform.jalo.order.price.PriceFactory#isNetUser(de.hybris.platform.jalo.user.User)
       */
      @Override
      public boolean isNetUser(最终用户paramUser)
      {
          返回originalPriceFactory.isNetUser(paramUser);
      }
 
  }
 
  
微wx笑
2楼-- · 2020-09-04 08:52

嗨,Graig,我要实现的是,当将产品添加到购物车时,我会修改购物车的进入价格,并且在整个结帐过程中,小计等都使用新价格。 您是否可以编写一小段代码来说明这一点,如果可以的话,可以使用您建议的促销方式?

浮生未央
3楼-- · 2020-09-04 09:00

使用促销方式执行此操作时,您需要重新计算购物车,以便使用新价格更新购物车条目。

请查看DefaultCommerceCartCalculationStrategy.recalculateCart(...)方法。

请注意,尽管使用大量促销活动也会影响性能,但应仔细测试和监视以确保适当。

最新的促销链接是:https://wiki.hybris.com/display/release5/Key+Concepts+of+Promotions

追夢秋陽
4楼-- · 2020-09-04 08:55

嗨,Brandan,是否建议采用这种扩展Europe1PriceFactory的方法,因为这时我们需要编写 使用代码作为返回值实现所有方法originalPriceFactory.isNetUser(paramUser); 如果在下一版本中将Europe1PriceFactory添加一个新方法,将会发生什么? 请澄清一下,因为我需要扩展Europe1PriceFactory类。我建议扩展Europe1PriceFactory类。 请咨询。

haha101010
5楼-- · 2020-09-04 08:49

只需在带有价格工厂类的spring xml文件中添加bean(我已经在CompanyCore扩展中添加了)

 
    <属性名称=" retrieveChannelStrategy" ref =" retrieveChannelStrategy"/>
 
 

类文件:

公共类CompanyCatalogAwareEurope1PriceFactory扩展了CatalogAwareEurope1PriceFactory {

     @Override
     公共PriceValue getBasePrice(AbstractOrderEntry条目)引发JaloPriceFactoryException {
         super.getBasePrice(entry);
     }
 } 

一周热门 更多>