From: Vásáry Dániel Date: Sun, 26 Nov 2023 20:44:52 +0000 (+0100) Subject: Invoice filter search date type X-Git-Url: http://git.useribm.hu/?a=commitdiff_plain;h=9175802464918104d81d026756ca5d3e20cdfc49;p=sly-crm.git Invoice filter search date type --- diff --git a/lis-db/src/main/java/hu/user/lis/db/repository/InvoiceRepositorySearchImpl.java b/lis-db/src/main/java/hu/user/lis/db/repository/InvoiceRepositorySearchImpl.java index 1c4be4f..f9eb249 100644 --- a/lis-db/src/main/java/hu/user/lis/db/repository/InvoiceRepositorySearchImpl.java +++ b/lis-db/src/main/java/hu/user/lis/db/repository/InvoiceRepositorySearchImpl.java @@ -13,6 +13,7 @@ import javax.persistence.criteria.CriteriaQuery; import javax.persistence.criteria.Predicate; import javax.persistence.criteria.Root; import java.util.ArrayList; +import java.util.Date; import java.util.List; import java.util.Objects; @@ -46,15 +47,20 @@ public class InvoiceRepositorySearchImpl implements InvoiceRepositorySearch { predicates.add(cb.isFalse(root.get("paid"))); } - if (Objects.nonNull(filter.getPaymentDeadLineFrom())) { - if (Objects.nonNull(filter.getPaymentDeadLineTo())) { - predicates.add(cb.between(root.get("paymentDeadline"), filter.getPaymentDeadLineFrom(), filter.getPaymentDeadLineTo())); + if (Objects.nonNull(filter.getDateType())) { + String field = filter.getDateType().getField(); + Date dateFrom = filter.getPaymentDeadLineFrom(); + Date dateTo = filter.getPaymentDeadLineTo(); + if (Objects.nonNull(dateFrom)) { + if (Objects.nonNull(dateTo)) { + predicates.add(cb.between(root.get(field), dateFrom, dateTo)); + } else { + predicates.add(cb.greaterThanOrEqualTo(root.get(field), dateFrom)); + } } else { - predicates.add(cb.greaterThanOrEqualTo(root.get("paymentDeadline"), filter.getPaymentDeadLineFrom())); - } - } else { - if (Objects.nonNull(filter.getPaymentDeadLineTo())) { - predicates.add(cb.lessThanOrEqualTo(root.get("paymentDeadline"), filter.getPaymentDeadLineTo())); + if (Objects.nonNull(dateTo)) { + predicates.add(cb.lessThanOrEqualTo(root.get(field), dateTo)); + } } } diff --git a/lis-db/src/main/java/hu/user/lis/db/repository/filter/DateType.java b/lis-db/src/main/java/hu/user/lis/db/repository/filter/DateType.java new file mode 100644 index 0000000..c7c4f40 --- /dev/null +++ b/lis-db/src/main/java/hu/user/lis/db/repository/filter/DateType.java @@ -0,0 +1,16 @@ +package hu.user.lis.db.repository.filter; + +import lombok.Getter; + +@Getter +public enum DateType { + PAYMENT_DEADLINE("Fizetési határidő", "paymentDeadline"), CREATE_DATE("Kiállítás dátuma", "createDate"), COMPLETION_DATE("Teljesítés dátuma", "completionDate"); + + private final String display; + private final String field; + + DateType(String display, String field) { + this.display = display; + this.field = field; + } +} diff --git a/lis-db/src/main/java/hu/user/lis/db/repository/filter/InvoiceFilter.java b/lis-db/src/main/java/hu/user/lis/db/repository/filter/InvoiceFilter.java index 09c2732..14914d7 100644 --- a/lis-db/src/main/java/hu/user/lis/db/repository/filter/InvoiceFilter.java +++ b/lis-db/src/main/java/hu/user/lis/db/repository/filter/InvoiceFilter.java @@ -29,4 +29,6 @@ public class InvoiceFilter extends PageableFilter { private Date paymentDeadLineTo; + private DateType dateType; + } diff --git a/lis-ui/src/main/java/hu/user/lis/ui/converter/DateTypeConverter.java b/lis-ui/src/main/java/hu/user/lis/ui/converter/DateTypeConverter.java new file mode 100644 index 0000000..0d0075b --- /dev/null +++ b/lis-ui/src/main/java/hu/user/lis/ui/converter/DateTypeConverter.java @@ -0,0 +1,36 @@ +package hu.user.lis.ui.converter; + +import hu.user.lis.db.repository.filter.DateType; +import org.springframework.stereotype.Component; +import org.zkoss.bind.BindContext; +import org.zkoss.bind.Converter; +import org.zkoss.zul.ListModel; +import org.zkoss.zul.Selectbox; +import org.zkoss.zul.ext.Selectable; + +import java.util.Objects; + +@Component +public class DateTypeConverter implements Converter { + @Override + public Object coerceToUi(DateType dateType, Selectbox box, BindContext bindContext) { + if (Objects.isNull(dateType)) { + return IGNORED_VALUE; + } + final ListModel model = box.getModel(); + ((Selectable) model).clearSelection(); + for (int i = 0; i < model.getSize(); i++) { + DateType status = (DateType) model.getElementAt(i); + if (status.equals(dateType)) { + return i; + } + } + return IGNORED_VALUE; + } + + @Override + public DateType coerceToBean(Object order, Selectbox bandbox, BindContext bindContext) { + ListModel model = bandbox.getModel(); + return model.getElementAt((int) order); + } +} \ No newline at end of file diff --git a/lis-ui/src/main/java/hu/user/lis/ui/view/InvoicesViewModel.java b/lis-ui/src/main/java/hu/user/lis/ui/view/InvoicesViewModel.java index 1b4a0d6..816d6f0 100644 --- a/lis-ui/src/main/java/hu/user/lis/ui/view/InvoicesViewModel.java +++ b/lis-ui/src/main/java/hu/user/lis/ui/view/InvoicesViewModel.java @@ -2,6 +2,7 @@ package hu.user.lis.ui.view; import com.google.common.collect.ImmutableMap; import hu.user.lis.db.*; +import hu.user.lis.db.repository.filter.DateType; import hu.user.lis.db.repository.filter.InvoiceFilter; import hu.user.lis.ui.Constants; import hu.user.lis.ui.data.InvoiceDataModel; @@ -43,12 +44,17 @@ public class InvoicesViewModel extends EntityViewModel implements Event @WireVariable private InvoiceDataModel invoiceDataModel; +// @Getter +// @WireVariable +// private DateTypeConverter dateTypeConverter; + @Init @Override public void init() { super.init(); invoiceFilter = InvoiceFilter.builder() .incoming(true) + .dateType(DateType.PAYMENT_DEADLINE) .status(InvoiceStatus.ACTIVE) .build(); eventBus.register(this); diff --git a/lis-ui/src/main/resources/web/invoices.zul b/lis-ui/src/main/resources/web/invoices.zul index 0eb1629..006990f 100644 --- a/lis-ui/src/main/resources/web/invoices.zul +++ b/lis-ui/src/main/resources/web/invoices.zul @@ -1,5 +1,9 @@ + + import hu.user.lis.db.repository.filter.DateType; + ListModelList dateTypes = new ListModelList(DateType.values()); + @@ -14,20 +18,37 @@