public FacilityProductReportEntry(StockCard stockCard, Date endTime) {
    if (endTime == null) {
      endTime = new Date();
    }

    this.productName = stockCard.getProduct().getPrimaryName();
    List<StockCardEntry> stockCardEntryList = filterEntryByDate(stockCard, endTime);
    this.productQuantity = calculateQuantity(stockCardEntryList);

    assignSoonestExpirationDate(stockCardEntryList);

    this.code = stockCard.getProduct().getCode();
  }
 private List<StockCardEntry> filterEntryByDate(final StockCard stockCard, final Date date) {
   return from(stockCard.getEntries())
       .filter(
           new Predicate<StockCardEntry>() {
             @Override
             public boolean apply(StockCardEntry input) {
               return !DateUtils.truncate(input.getCreatedDate(), Calendar.DATE).after(date);
             }
           })
       .toList();
 }