@Override public String value(WrappedBooking input) { return Attribute.normalize(input.getMainCategory()); } },
@Override public String value(WrappedBooking input) { return Attribute.normalize(input.getSpecification()); } };
@Override public String value(WrappedBooking input) { return Attribute.normalize(input.getSubCategory()); } },
@Override public BookingGroup createGroup(WrappedBooking booking) { if (booking == null || booking.getPurpose() == null || booking.getMandateReference() == null || booking.getCreditorId() == null || booking.getRuleIds() == null) { return null; } log.trace("create group for {}, {}", booking.getCreditorId(), booking.getMandateReference()); return new BookingGroup(booking.getCreditorId()+"|"+booking.getMandateReference(), booking.getRuleIds().toString(), getGroupName(), getGroupType()); }
static BookingCategory mapToBookingcategory(WrappedBooking wrappedBooking) { BookingCategory bookingCategory = new BookingCategory(); bookingCategory.setReceiver(wrappedBooking.getOtherAccount()); bookingCategory.setMainCategory(wrappedBooking.getMainCategory()); bookingCategory.setSubCategory(wrappedBooking.getSubCategory()); bookingCategory.setSpecification(wrappedBooking.getSpecification()); bookingCategory.setCustom(wrappedBooking.getCustom()); bookingCategory.setEmail(wrappedBooking.getEmail()); bookingCategory.setHomepage(wrappedBooking.getHomepage()); bookingCategory.setHotline(wrappedBooking.getHotline()); bookingCategory.setLogo(wrappedBooking.getLogo()); if (wrappedBooking.getCycle() != null) { bookingCategory.setInterval(Cycle.valueOf(wrappedBooking.getCycle().toString())); } bookingCategory.setRules(wrappedBooking.getRuleIds()); return bookingCategory; }
private boolean evalRecurrentGroup(BookingGroup bookingGroup, List<WrappedBooking> bookings, List<Matcher> contractBlackList) { if (bookings.size() == 0) { return false; } BigDecimal amount = AmountCalculator.calcAmount(bookings); if (amount.compareTo(BigDecimal.ZERO) == 0) { return false; } bookingGroup.setCycle(CycleCalculator.fromDates(bookings.stream() .map(WrappedBooking::getExecutionDate) .collect(Collectors.toList()))); bookingGroup.setContract(ContractValidator.isContract(bookingGroup, bookings, contractBlackList)); bookingGroup.setCancelled(!bookingGroup.isEffective(LocalDate.now(), bookings)); bookingGroup.setMainCategory(bookings.get(0).getMainCategory()); bookingGroup.setSubCategory(bookings.get(0).getSubCategory()); bookingGroup.setSpecification(bookings.get(0).getSpecification()); bookingGroup.setHomepage(bookings.get(0).getHomepage()); bookingGroup.setHotline(bookings.get(0).getHotline()); bookingGroup.setEmail(bookings.get(0).getEmail()); bookingGroup.setLogo(bookings.get(0).getLogo()); bookingGroup.setMandatreference(bookings.get(0).getMandateReference()); if (StringUtils.isNotBlank(bookings.get(0).getOtherAccount())) { bookingGroup.setOtherAccount(bookings.get(0).getOtherAccount()); } else { bookingGroup.setOtherAccount(bookings.get(0).getReferenceName()); } bookingGroup.setAmount(amount); return true; }
public static void applyCategories(List<BookingEntity> bookingEntities, AnalyticsResult result) { result.getBookings().forEach(categorizedBooking -> { bookingEntities.stream() .filter(bookingEntity -> categorizedBooking.getBooking().getBookingId().equals(bookingEntity.getExternalId())) .findFirst().ifPresent(bookingEntity -> { if (categorizedBooking.getMainCategory() != null) { bookingEntity.setBookingCategory(mapToBookingcategory(categorizedBooking)); } }); }); }
if (booking.getAmount() == null || booking.getAmount().compareTo(new BigDecimal("0.00")) >= 0) { return false; if (booking.getPurpose() == null) { return false; if (booking.getCreditorId() == null) { return false; if (booking.getRuleIds() == null) { return false;
@Override public BookingGroup createGroup(WrappedBooking booking) { if (booking == null) { return null; } if (booking.getRuleIds() != null) { return new BookingGroup(booking.getBankConnection(), booking.getRuleIds().toString(), getGroupName(), getGroupType()); } else if (booking.getAmount() != null) { return new BookingGroup(booking.getBankConnection(), booking.getAmount().toPlainString(), getGroupName(), getGroupType()); } return null; }
@Override public BookingGroup createGroup(WrappedBooking booking) { if (booking == null) { return null; } if (booking.getRuleIds() != null) { return new BookingGroup(booking.getBankConnection(), booking.getRuleIds().toString(), getGroupName(), getGroupType()); } return new BookingGroup(booking.getBankConnection(), booking.getPurpose(), getGroupName(), getGroupType()); }
@Override public void modify(WrappedBooking booking) { if (this.filter == null || this.filter.filter(booking.getBooking())) { useRulesOn(booking); } }
static BookingCategory mapToBookingcategory(WrappedBooking wrappedBooking) { BookingCategory bookingCategory = new BookingCategory(); bookingCategory.setReceiver(wrappedBooking.getOtherAccount()); bookingCategory.setMainCategory(wrappedBooking.getMainCategory()); bookingCategory.setSubCategory(wrappedBooking.getSubCategory()); bookingCategory.setSpecification(wrappedBooking.getSpecification()); bookingCategory.setCustom(wrappedBooking.getCustom()); bookingCategory.setEmail(wrappedBooking.getEmail()); bookingCategory.setHomepage(wrappedBooking.getHomepage()); bookingCategory.setHotline(wrappedBooking.getHotline()); bookingCategory.setLogo(wrappedBooking.getLogo()); if (wrappedBooking.getCycle() != null) { bookingCategory.setInterval(Cycle.valueOf(wrappedBooking.getCycle().toString())); } bookingCategory.setRules(wrappedBooking.getRuleIds()); return bookingCategory; }
public static void applyCategories(List<BookingEntity> bookingEntities, AnalyticsResult result) { result.getBookings().forEach(categorizedBooking -> { bookingEntities.stream() .filter(bookingEntity -> categorizedBooking.getBooking().getBookingId().equals(bookingEntity.getExternalId())) .findFirst().ifPresent(bookingEntity -> { if (categorizedBooking.getMainCategory() != null) { bookingEntity.setBookingCategory(mapToBookingcategory(categorizedBooking)); } }); }); }
public static List<BookingPeriod> createGroupPeriods(List<BookingPeriod> bookingPeriods, List<WrappedBooking> bookings) { return bookingPeriods.stream() .map(period -> { List<WrappedBooking> periodBookings = filterPeriodBookings(bookings, period); BigDecimal periodAmount = periodBookings.stream() .map(WrappedBooking::getAmount) .reduce(BigDecimal.ZERO, BigDecimal::add); BookingPeriod groupPeriod = (BookingPeriod) period.clone(); groupPeriod.setAmount(periodAmount); groupPeriod.setBookings(periodBookings .stream() .map(wrappedBooking -> { ExecutedBooking executedBooking = new ExecutedBooking(); executedBooking.setBookingId(wrappedBooking.getBooking().getBookingId()); executedBooking.setExecutionDate(wrappedBooking.getBooking().getExecutionDate()); executedBooking.setExecuted(true); return executedBooking; }) .collect(Collectors.toList())); return groupPeriod; }) .filter(period -> period.getBookings().size() > 0) .collect(Collectors.toList()); }
private static boolean evalBookingPeriod(BookingPeriod period, List<WrappedBooking> bookings, List<LocalDate> bookingDates) { List<WrappedBooking> periodBookings = filterPeriodBookings(bookings, period); //forecast, clone bookings if (periodBookings.size() == 0) { period.setBookings(new ArrayList<>()); bookingDates.stream() .filter(executionDate -> dateInPeriod(executionDate, period)) .forEach(executionDate -> { ExecutedBooking forecastBooking = new ExecutedBooking(); forecastBooking.setBookingId(bookings.get(bookings.size()-1).getBooking().getBookingId()); forecastBooking.setExecuted(false); forecastBooking.setExecutionDate(executionDate); period.getBookings().add(forecastBooking); }); } else { //already executed bookings period.setBookings(periodBookings.stream().map(wrappedBooking -> { ExecutedBooking executedBooking = new ExecutedBooking(); executedBooking.setBookingId(wrappedBooking.getBooking().getBookingId()); executedBooking.setExecuted(true); executedBooking.setExecutionDate(wrappedBooking.getBooking().getExecutionDate()); return executedBooking; }).collect(Collectors.toList())); period.setAmount(periodBookings.stream() .map(WrappedBooking::getAmount) .reduce(BigDecimal.ZERO, BigDecimal::add)); } return period.getBookings().size() > 0 ? true : false; }