Vue Storefront is now Alokai! Learn More
B2B Features

B2B Features

Since version 4.0.0, Alokai's integration for SAP Commerce Cloud allows you to use B2B features of your SAP Commerce Cloud instance.

Assumptions

We have created our B2B features implementation based on the standard B2B Base Site & Base Store setup provided by SAP Comerce Cloud: the powertools-spa Base Site featuring the powertools Base Store and the powertools-spaContentCatalog

Make sure that B2B features are enabled on your SAP Commerce Cloud instance. Sample configuration of SAP Commerce Cloud fully configured with B2B features can be found here.

Configuration

Configuration is exactly the same as the standard one described in the Quick start guide section of our docs.

The only difference is when providing baseSiteId, make sure to provide the ID of a B2B store (powertools-spa in the sample configuration), rather than of a typical B2C store (e.g. apparel-uk-spa in the sample configuration).

If you try to use a B2B feature while the middleware is misconfigured to still connect to a B2C store, you may face errors such as the one below:

401 Unauthorized

{
  "errors": [
    {
      "message": "It's not allowed to execute this call from the current channel",
      "type": "AccessDeniedError"
    }
  ]
}

B2B Features overview

B2B Products

  • To get a product, use the getProduct method.
    const product = await sdk.sapcc.getProduct({ id: "1992695" });
    
  • To get a list of products from a category, use the getProductsByCategory method.
    const products = await sdk.sapcc.getProductsByCategory({
      categoryId: "1",
    });
    

B2B Carts

  • To get the current cart, use the getCurrentOrgCart method.
    const currentCart = await sdk.sapcc.getCurrentOrgCart();
    
  • To update the delivery address for a cart, use the replaceOrgCartDeliveryAddress method.
    const updatedCart = await sdk.sapcc.replaceOrgCartDeliveryAddress({
      cartId: "00035084",
      addressId: "8796716793879",
    });
    
  • To update the quantity of a product in the cart, use the replaceOrgCartEntries method.
    const updatedCartEntries = await sdk.sapcc.replaceOrgCartEntries({
      cartId: "00035084" /*...other props*/,
    });
    
  • To create additional quantity of products in the cart, use the doAddOrgCartEntries method.
    const addedEntries = await sdk.sapcc.doAddOrgCartEntries({
      cartId: "00035084" /*...other props*/,
    });
    
  • To update the cost center for the cart, use the replaceOrgCartCostCenter method.
    const updatedCostCenter = await sdk.sapcc.replaceOrgCartCostCenter({
      cartId: "00035084",
      costCenterId: "Pronto_Services",
    });
    
  • To update the payment type for the cart, use the replaceOrgCartPaymentType method.
    const updatedPaymentType = await sdk.sapcc.replaceOrgCartPaymentType({
      cartId: "00035084",
      paymentType: "ACCOUNT",
    });
    

B2B Users

  • To create a user registration request, use the createRegistrationRequest method.
    const userRegistration = await sdk.sapcc.createRegistrationRequest({
      /*...props*/
    });
    
  • To get a user, use the getOrgUser method.
    const user = await sdk.sapcc.getOrgUser();
    

B2B Orders

  • To create a cart from a previous order, use the createCartFromOrder method.
    const newCart = await sdk.sapcc.createCartFromOrder({
      orderCode: "00001234",
    });
    
  • To create an order, use the placeOrgOrder method.
    const newOrder = await sdk.sapcc.placeOrgOrder({
      cartId: "00001234",
      termsChecked: true,
    });
    
  • To create a replenishment order, use the createReplenishmentOrder method.
    const newReplenishmentOrder = await sdk.sapcc.createReplenishmentOrder(
      props
    );
    
  • To get the order history of an organization's branch, use the getUserBranchOrderHistory method.
    const orderHistory = await sdk.sapcc.getUserBranchOrderHistory();
    
  • To get an order from an organization's branch, use the getBranchOrder method.
    const branchOrder = await sdk.sapcc.getBranchOrder({ code: "00001234" });
    

B2B Order Approval

  • To get a list of orders to be approved for a given user, use the getOrderApprovals method.
    const orderApprovals = await sdk.sapcc.getOrderApprovals();
    
  • To approve or reject an order, use the doMakeOrderApprovalDecision method.
    const approvalDecision = await sdk.sapcc.doMakeOrderApprovalDecision({
      orderApprovalCode: "approval-code" /*...other props*/,
    });
    
  • To get details of an order to be approved, use the getOrderApproval method.
    const orderDetails = await sdk.sapcc.getOrderApproval({
      orderApprovalCode: "approval-code",
    });
    

B2B Payment Types

  • To get available payment types, use the getPaymentTypes method.
    const paymentTypes = await sdk.sapcc.getPaymentTypes();
    

B2B Cost Centers

  • To get active cost centers, use the getActiveCostCenters method.
    const activeCostCenters = await sdk.sapcc.getActiveCostCenters();
    
  • To get cost center details, use the getCostCenter method.
    const costCenterDetails = await sdk.sapcc.getCostCenter({
      costCenterCode: "some-code",
    });
    
  • To get budgets for a cost center, use the getBudgetsForCostCenter method.
    const budgetsForCostCenter = await sdk.sapcc.getBudgetsForCostCenter({
      costCenterCode: "some-code",
    });
    
  • To get all cost centers, use the getCostCenters method.
    const allCostCenters = await sdk.sapcc.getCostCenters();