public RvLineItem createRVLineItemWithBasicDetails(SkuGroup skuGroup, Sku sku) {
   RvLineItem rvLineItem = new RvLineItem();
   rvLineItem.setProductVariant(sku.getProductVariant());
   rvLineItem.setBatchNumber(skuGroup.getBatchNumber());
   rvLineItem.setQty(1L);
   rvLineItem.setMrp(skuGroup.getMrp());
   rvLineItem.setCostPrice(skuGroup.getCostPrice());
   rvLineItem.setMfgDate(skuGroup.getMfgDate());
   rvLineItem.setExpiryDate(skuGroup.getExpiryDate());
   rvLineItem.setSku(sku);
   rvLineItem.setSkuGroup(skuGroup);
   return rvLineItem;
 }
  @Transactional
  public RvLineItem reconcileInventoryForPV(
      RvLineItem rvLineItem, List<SkuItem> inStockSkuItems, Sku sku) {
    RvLineItem rvLineItemSaved = null;
    User loggedOnUser = userService.getLoggedInUser();
    int deleteQty = rvLineItem.getQty().intValue();
    rvLineItem.setSku(sku);
    rvLineItem.setReconciledQty(rvLineItem.getQty());
    rvLineItem.setReconciliationType(
        EnumReconciliationType.ProductVariantAudited.asReconciliationType());
    rvLineItemSaved = (RvLineItem) reconciliationVoucherDao.save(rvLineItem);

    for (int i = 0; i < deleteQty; i++) {
      SkuItem skuItem = inStockSkuItems.get(i);
      // Delete -1 entry in PVI
      adminInventoryService.inventoryCheckinCheckout(
          sku,
          skuItem,
          null,
          null,
          null,
          rvLineItemSaved,
          null,
          inventoryService.getInventoryTxnType(EnumInvTxnType.PRODUCT_VARIANT_AUDITED),
          -1L,
          loggedOnUser);

      // set sku item status to Product_variant_ Audited
      skuItem.setSkuItemStatus(EnumSkuItemStatus.ProductVariantAudited.getSkuItemStatus());
      skuItem = skuGroupService.saveSkuItem(skuItem);
    }

    // Check inventory health now.
    inventoryService.checkInventoryHealth(sku.getProductVariant());
    // save RvLine item

    return rvLineItemSaved;
  }