OOTB B2B Hybris starts the b2bApprovalProcess when an order is placed. To not let that happen, we need to override the placeOrderHook that Hybris uses to not let this process start. Below are the steps to achieve this:
Create the following bean:
<alias name="b2bApprovalBusinessProcessCreationPlaceOrderMethodHook" alias="myb2bApprovalBusinessProcessCreationPlaceOrderMethodHook" />
<bean id="b2bApprovalBusinessProcessCreationPlaceOrderMethodHook"
class="com.<site>.core.order.hook.MyB2BApprovalBusinessProcessCreationPlaceOrderMethodHook">
<property name="businessProcessCreationStrategy" ref="defaultB2BCreateOrderFromCartStrategy"/>
</bean>
Create and open the class that we create in this bean. The class should look like the following (note: we are not writing any logic in the implementation of any of the methods)
package com.<site>.core.order.hook;
import de.hybris.platform.b2b.strategies.BusinessProcessStrategy;
import de.hybris.platform.commerceservices.order.hook.CommercePlaceOrderMethodHook;
import de.hybris.platform.commerceservices.service.data.CommerceCheckoutParameter;
import de.hybris.platform.commerceservices.service.data.CommerceOrderResult;
import org.springframework.beans.factory.annotation.Required;
public class MyB2BApprovalBusinessProcessCreationPlaceOrderMethodHook implements CommercePlaceOrderMethodHook {
private BusinessProcessStrategy businessProcessCreationStrategy;
@Override
public void afterPlaceOrder(CommerceCheckoutParameter commerceCheckoutParameter, CommerceOrderResult commerceOrderResult) {
}
@Override
public void beforePlaceOrder(CommerceCheckoutParameter commerceCheckoutParameter)
{
// not implemented
}
@Override
public void beforeSubmitOrder(CommerceCheckoutParameter commerceCheckoutParameter, CommerceOrderResult commerceOrderResult)
{
// not implemented
}
@Required
public void setBusinessProcessCreationStrategy(final BusinessProcessStrategy businessProcessCreationStrategy)
{
this.businessProcessCreationStrategy = businessProcessCreationStrategy;
}
protected BusinessProcessStrategy getBusinessProcessCreationStrategy()
{
return businessProcessCreationStrategy;
}
}
OOTB Hybris uses the bean with alias “b2bApprovalBusinessProcessCreationPlaceOrderMethodHook” to start the process on afterPlaceOrder. We are overriding that class to prevent starting the process.
0 Comments