Interface SkuInventoryService<I extends SkuInventory>

Type Parameters:
I -
All Superinterfaces:
com.broadleafcommerce.data.tracking.core.service.CrudEntityService<I>
All Known Implementing Classes:
DefaultSkuInventoryService

public interface SkuInventoryService<I extends SkuInventory> extends com.broadleafcommerce.data.tracking.core.service.CrudEntityService<I>
Service API for adjusting SkuInventory.
Author:
Kelly Tisdell (ktisdell)
  • Method Details

    • readAllByName

      org.springframework.data.domain.Page<I> readAllByName(@Nullable String nameQuery, @Nullable cz.jirutka.rsql.parser.ast.Node filters, @Nullable org.springframework.data.domain.Pageable page, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
      Read all Inventory Locations, optionally filtered by name or number.
      Parameters:
      nameQuery - (optional) the name to filter by
      page - the requested page of results from the database
      filters - additional filters to apply in the query, can be null
      context - context information surrounding sandboxing and multitenant state
      Returns:
      all SkuInventory, optionally filtered by name
    • findAllByInventoryLocationContextId

      org.springframework.data.domain.Page<I> findAllByInventoryLocationContextId(String inventoryLocationId, @Nullable cz.jirutka.rsql.parser.ast.Node filters, @Nullable org.springframework.data.domain.Pageable page, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
      Read all Sku Inventories for the specified inventory location id matching the given filters. Read all Inventory Locations,
      Parameters:
      inventoryLocationId - the inventory location id
      filters - additional filters to apply in the query, can be null
      page - the requested page of results from the database
      context - context information surrounding sandboxing and multitenant state
      Returns:
      the Sku Inventories for the specified inventory location id
    • readAllByInventoryLocationId

      Stream<I> readAllByInventoryLocationId(String inventoryLocationId, @Nullable cz.jirutka.rsql.parser.ast.Node filters, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
      Read all Sku Inventories for the specified inventory location id matching the given filters.
      Parameters:
      inventoryLocationId - the inventory location id
      filters - additional filters to apply in the query, can be null
      context - context information surrounding sandboxing and multitenant state
      Returns:
      the Sku Inventories for the specified inventory location id
    • deleteAllByInventoryLocationId

      void deleteAllByInventoryLocationId(String inventoryLocationId, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
      Deletes all the SkuInventory for the specified inventory location id
      Parameters:
      inventoryLocationId - the inventory location id
      contextInfo - context information surrounding sandboxing and multitenant state
    • readByParentSkuInventoryIdAndSerializationValue

      Optional<I> readByParentSkuInventoryIdAndSerializationValue(String parentSkuInventoryId, String serializationValue, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
      Reads a (unique) SkuInventory record for a parent sku inventory id and serialization value.
      Parameters:
      parentSkuInventoryId - the parent sku inventory id
      serializationValue - the serialization value
      context - context information surrounding sandboxing and multitenant state
      Returns:
      a (unique) SkuInventory record for a given parent sku inventory id and serialization value.
    • existsByParentSkuInventoryId

      boolean existsByParentSkuInventoryId(String parentSkuInventoryId, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
      Determines if any SkuInventory records exist with the given SkuInventory.getParentSkuInventoryId().
      Parameters:
      parentSkuInventoryId - the parent sku inventory id to filter by
      context - context information surrounding sandboxing and multitenant state
      Returns:
      true if any SkuInventory records exist with the given SkuInventory.getParentSkuInventoryId(), otherwise false
    • createSkuInventoryReservations

      List<InventoryTransaction> createSkuInventoryReservations(@NonNull SkuInventoryReservationRequest request, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) throws InventoryUnavailableException
      Creates HARD or a SOFT Inventory Reservations. This results in the creation of 1 or more InventoryTransaction records. A SOFT inventory reservation is a temporary reservation that may be removed or rolled back after a period of time. A SOFT reservation typically results in decrementing quantityAvailable on the SkuInventory record. These are typically created prior to payment processing. A HARD reservation makes the SOFT reservation permanent. These are typically created after payment processing. If a corresponding SOFT reservation does not exist, then the creation of a HARD reservation will attempt to decrement quantityAvailable as well. In this case, the process is similar to creating a SOFT reservation immediately followed by a HARD reservation.
      Parameters:
      request - SkuInventoryReservationRequest to be processed
      contextInfo - Context information around sandbox and multitenant state.
      Returns:
      The InventoryTransactions resulting from processing the request.
      Throws:
      InventoryUnavailableException - if inventory cannot be reserved or otherwise decremented
    • releaseSkuInventoryReservations

      ReleaseSkuInventoryReservationResponse releaseSkuInventoryReservations(ReleaseSkuInventoryReservationRequest request, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
      Releases inventory reservations based on the given ReleaseSkuInventoryReservationRequest.

      By default, it only releases the soft reservations

      Parameters:
      request - the ReleaseSkuInventoryReservationRequest containing details about the release
      contextInfo - context information around sandbox and multitenant state
      Returns:
      a ReleaseSkuInventoryReservationResponse represents the result
    • fulfillInventory

      List<InventoryTransaction> fulfillInventory(@NonNull SkuInventoryAdjustmentRequest request, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) throws InventoryUnavailableException, InventoryNotReservedException
      Performs the DefaultInventoryTransactionType.FULFILLED InventoryTransactions to update SkuInventory for fulfilled items.

      This transaction decrements the reserved and on-hand inventory for the requested items. This should only be performed after the items have already been DefaultInventoryTransactionType.HARD_RESERVED.

      Parameters:
      request - inventory adjustment to be processed as fulfilled
      contextInfo - Context information around sandbox and multitenant state.
      Returns:
      The InventoryTransactions resulting from processing the request.
      Throws:
      InventoryUnavailableException - if inventory could not be decremented
      InventoryNotReservedException - if inventory was not already reserved
    • cancelInventory

      List<InventoryTransaction> cancelInventory(@NonNull SkuInventoryAdjustmentRequest request, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) throws InventoryUnavailableException, InventoryNotReservedException
      Performs the DefaultInventoryTransactionType.CANCELLED InventoryTransactions to update SkuInventory for fulfilled items.

      This transaction decrements the reserved inventory for the requested items. This should only be performed after the items have already been DefaultInventoryTransactionType.HARD_RESERVED.

      Parameters:
      request - inventory adjustment to be processed as cancelled
      contextInfo - Context information around sandbox and multitenant state.
      Returns:
      The InventoryTransactions resulting from processing the request.
      Throws:
      InventoryUnavailableException - if inventory could not be decremented
      InventoryNotReservedException - if inventory was not already reserved
    • returnInventory

      List<InventoryTransaction> returnInventory(@NonNull SkuInventoryAdjustmentRequest request, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
      Performs the DefaultInventoryTransactionType.RETURNED InventoryTransactions to update SkuInventory for returned items.

      This transaction increments the on-hand inventory for the requested items.

      Parameters:
      request - inventory adjustment to be processed as returned
      contextInfo - Context information around sandbox and multitenant state.
      Returns:
      The InventoryTransactions resulting from processing the request.
    • readByInventoryLocationAndSkuRefFieldValues

      Optional<I> readByInventoryLocationAndSkuRefFieldValues(String inventoryLocationId, Optional<String> externalId, Optional<String> skuCode, Optional<String> upc, Optional<String> ean, Optional<String> gtin, com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
      Reads a (unique) SkuInventory record for a given location, based on SkuRef fields.
      Parameters:
      inventoryLocationId -
      externalId -
      skuCode -
      upc -
      ean -
      gtin -
      context -
      Returns:
    • readByInventoryLocationAndSkuRefFieldValuesAndNotSerialized

      Optional<I> readByInventoryLocationAndSkuRefFieldValuesAndNotSerialized(String inventoryLocationId, Optional<String> externalId, Optional<String> skuCode, Optional<String> upc, Optional<String> ean, Optional<String> gtin, com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
      Reads a (unique) non-serialized SkuInventory record for a given location, based on SkuRef fields.

      Typically used for the validation to ensure that the parent of serialized inventories do not have duplicate sku reference.

    • existsByInventoryLocationAndSkuRefFieldValues

      boolean existsByInventoryLocationAndSkuRefFieldValues(String inventoryLocationId, Optional<String> skuContextId, Optional<String> externalId, Optional<String> skuCode, Optional<String> upc, Optional<String> ean, Optional<String> gtin, com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
      Determines is a SkuInventory record exists in a given location, based on SkuRef fields.
      Parameters:
      inventoryLocationId -
      skuContextId -
      externalId -
      skuCode -
      upc -
      ean -
      gtin -
      context -
      Returns:
    • readSkuInventoryDetails

      List<I> readSkuInventoryDetails(SkuReferenceFieldType skuRefType, Set<String> skuRefs, InventoryLocation location, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
      Reads SkuInventory details based on specific SkuRef details, specified by the SkuReferenceFieldType for a given InventoryLocation.
      Parameters:
      skuRefType -
      skuRefs -
      location -
      contextInfo -
      Returns:
    • readAll

      Stream<I> readAll(@Nullable Optional<cz.jirutka.rsql.parser.ast.Node> filters, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
      Generally used for batch export, this allows a caller to query, filter, and stream paged results.
      Parameters:
      filters -
      context -
      Returns: