if (filter instanceof BuchungssatzFilter) {
myFilter = (BuchungssatzFilter) filter;
} else {
myFilter = new BuchungssatzFilter(filter);
}
final QueryFilter queryFilter = new QueryFilter(filter);
if (validateTimeperiod(myFilter) == false) {
throw new UserException("fibu.buchungssatz.error.invalidTimeperiod");
}
if (myFilter.getFromMonth() < 0) {
// Kein Von-Monat gesetzt.
queryFilter.add(Restrictions.eq("year", myFilter.getFromYear()));
queryFilter.add(Restrictions.between("month", 0, 11));
} else if (myFilter.getToYear() > 0) {
if (myFilter.getFromYear() == myFilter.getToYear()) {
queryFilter.add(Restrictions.eq("year", myFilter.getFromYear()));
queryFilter.add(Restrictions.between("month", myFilter.getFromMonth(), myFilter.getToMonth()));
} else {
// between but different years
queryFilter.add(Restrictions.disjunction().add(
Restrictions.and(Restrictions.eq("year", myFilter.getFromYear()), Restrictions.ge("month", myFilter.getFromMonth()))).add(
Restrictions.and(Restrictions.eq("year", myFilter.getToYear()), Restrictions.le("month", myFilter.getToMonth()))).add(
Restrictions.and(Restrictions.gt("year", myFilter.getFromYear()), Restrictions.lt("year", myFilter.getToYear()))));
}
} else {
// Nur Von-Monat gesetzt.
queryFilter.add(Restrictions.eq("year", myFilter.getFromYear()));
queryFilter.add(Restrictions.eq("month", myFilter.getFromMonth()));
}
queryFilter.addOrder(Order.asc("year")).addOrder(Order.asc("month")).addOrder(Order.asc("satznr"));
final List<BuchungssatzDO> list = getList(queryFilter);
return list;
}