2020-09-04 08:08发布
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
如何从Java代码更改产品价格?例如,如果我有ProductModel,请在将产品添加到购物车之前说一下
如果可以避免的话,最好不要使用子类型,这会使您的代码更加脆弱。 您可以在任何扩展名中添加类,但必须将其添加到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); } }
嗨,Graig,我要实现的是,当将产品添加到购物车时,我会修改购物车的进入价格,并且在整个结帐过程中,小计等都使用新价格。 您是否可以编写一小段代码来说明这一点,如果可以的话,可以使用您建议的促销方式?
使用促销方式执行此操作时,您需要重新计算购物车,以便使用新价格更新购物车条目。
请查看DefaultCommerceCartCalculationStrategy.recalculateCart(...)方法。
最新的促销链接是:https://wiki.hybris.com/display/release5/Key+Concepts+of+Promotions
嗨,Brandan,是否建议采用这种扩展Europe1PriceFactory的方法,因为这时我们需要编写 使用代码作为返回值实现所有方法originalPriceFactory.isNetUser(paramUser); 如果在下一版本中将Europe1PriceFactory添加一个新方法,将会发生什么? 请澄清一下,因为我需要扩展Europe1PriceFactory类。我建议扩展Europe1PriceFactory类。 请咨询。
只需在带有价格工厂类的spring xml文件中添加bean(我已经在CompanyCore扩展中添加了)
<属性名称=" retrieveChannelStrategy" ref =" retrieveChannelStrategy"/>
类文件:
公共类CompanyCatalogAwareEurope1PriceFactory扩展了CatalogAwareEurope1PriceFactory { @Override 公共PriceValue getBasePrice(AbstractOrderEntry条目)引发JaloPriceFactoryException { super.getBasePrice(entry); } }
最多设置5个标签!
如果可以避免的话,最好不要使用子类型,这会使您的代码更加脆弱。 您可以在任何扩展名中添加类,但必须将其添加到src中,而不是web/src目录中,以确保由全局类加载器加载。
嗨,Graig,我要实现的是,当将产品添加到购物车时,我会修改购物车的进入价格,并且在整个结帐过程中,小计等都使用新价格。 您是否可以编写一小段代码来说明这一点,如果可以的话,可以使用您建议的促销方式?
使用促销方式执行此操作时,您需要重新计算购物车,以便使用新价格更新购物车条目。
请查看DefaultCommerceCartCalculationStrategy.recalculateCart(...)方法。
请注意,尽管使用大量促销活动也会影响性能,但应仔细测试和监视以确保适当。最新的促销链接是:https://wiki.hybris.com/display/release5/Key+Concepts+of+Promotions
嗨,Brandan,是否建议采用这种扩展Europe1PriceFactory的方法,因为这时我们需要编写 使用代码作为返回值实现所有方法originalPriceFactory.isNetUser(paramUser); 如果在下一版本中将Europe1PriceFactory添加一个新方法,将会发生什么? 请澄清一下,因为我需要扩展Europe1PriceFactory类。我建议扩展Europe1PriceFactory类。 请咨询。
只需在带有价格工厂类的spring xml文件中添加bean(我已经在CompanyCore扩展中添加了)
类文件:
一周热门 更多>