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;
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));
+ }
}
}
--- /dev/null
+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;
+ }
+}
private Date paymentDeadLineTo;
+ private DateType dateType;
+
}
--- /dev/null
+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<Object, DateType, Selectbox> {
+ @Override
+ public Object coerceToUi(DateType dateType, Selectbox box, BindContext bindContext) {
+ if (Objects.isNull(dateType)) {
+ return IGNORED_VALUE;
+ }
+ final ListModel<?> model = box.getModel();
+ ((Selectable<Object>) 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<DateType> model = bandbox.getModel();
+ return model.getElementAt((int) order);
+ }
+}
\ No newline at end of file
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;
@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);
<?component name="entity-selector" inline="true" class="hu.user.lis.ui.editor.widget.EntitySelector"?>
<zk>
+ <zscript>
+ import hu.user.lis.db.repository.filter.DateType;
+ ListModelList dateTypes = new ListModelList(DateType.values());
+ </zscript>
<window vflex="true" viewModel="@id('vm') @init('hu.user.lis.ui.view.InvoicesViewModel')">
<caption label="Számlák"/>
<borderlayout>
<label value="Partner"/>
<separator orient="vertical"/>
<entity-selector entity="Partner" style="display: inline-block;" width="300px"/>
+
<space bar="true"/>
+
<label value="Projekt"/>
<separator orient="vertical"/>
<entity-selector entity="Project" style="display: inline-block;" width="300px"/>
+
<space bar="true"/>
+
<toolbarbutton mode="toggle" iconSclass="z-icon-external-link" label="Költség"
checked="@load(vm.invoiceFilter.incoming)"
onClick="@command('setIncoming', incoming=true)"/>
<toolbarbutton mode="toggle" iconSclass="z-icon-sign-in" label="Bevétel"
checked="@load(!vm.invoiceFilter.incoming)"
onClick="@command('setIncoming', incoming=false)"/>
+
<space bar="true"/>
- <!-- <separator orient="vertical"/>-->
- <label value="Fizetési határidő"/>
+ <!-- <selectbox model="${dateTypes}"-->
+ <!-- width="100%"-->
+ <!-- selectedIndex="@bind(vm.invoiceFilter.dateType) @converter(vm.dateTypeConverter)">-->
+ <!-- <template name="model">-->
+ <!-- ${each.display}-->
+ <!-- </template>-->
+ <!-- </selectbox>-->
+
+ <combobox instant="true" model="${dateTypes}" selectedItem="@bind(vm.invoiceFilter.dateType)"
+ readonly="true">
+ <template name="model">
+ <comboitem label="${each.display}"/>
+ </template>
+ </combobox>
<separator orient="vertical"/>
<datebox instant="true" format="yyyy. MM. dd."
value="@bind(vm.invoiceFilter.paymentDeadLineFrom)"/>
value="@bind(vm.invoiceFilter.paymentDeadLineTo)"/>
<space bar="true"/>
+
<toolbarbutton mode="toggle" iconSclass="z-icon-credit-card" label="Fizetve"
checked="@bind(vm.invoiceFilter.paid)"/>
var keyCode = evt.keyCode;
console.log(keyCode, zk.$("$entityBandBox").getValue());
if (keyCode == 13){
+ //zk.$.notify("Hello World");
zk.$("$entityBandBox").close();
zk.$("$entityBandBox").focus();
return;