From: Vásáry Dániel Date: Wed, 25 Oct 2023 18:17:30 +0000 (+0200) Subject: Project id suggest finished, bug fixes X-Git-Url: http://git.useribm.hu/?a=commitdiff_plain;h=2e7c3d15365e1624d94eef59f73c0f80c9ed5ab6;p=sly-crm.git Project id suggest finished, bug fixes --- diff --git a/TODO.txt b/TODO.txt index 741d171..721c62d 100644 --- a/TODO.txt +++ b/TODO.txt @@ -1,24 +1,23 @@ -0.1.9 --banki integráció --távlati: utalás előkészítése +- távlati: autorizáció +- távlati: dokumentum kezelés szétválasztása +- távlati: utalás előkészítése +- távlati: banki integráció 0.1.8 - A "Számla kiegyenlítés" számla sorszám alapú kereséssel indul, találat esetén megjelenik egy űrlap: - számla részletek megejelenítése: határidő, összeg, devizanem - - mekkora pénzmozgás volt, milyen devizanemben, illetve felvehető új néznmozgás + - mekkora pénzmozgás volt, milyen devizanemben, illetve felvehető új pénzmozgás - az űrlapon a csatolt számlakép megjelenítése - mivel tartozhat egy sorszám több számlához is, ezt kezelni kell - A "Szállítói követelés követés" funkció a számlák listáját mutatja szűrve, azokat tartalmazza amik még nincsenek kiegyenlítve (külön a bejövö külön a kimenő) - munkalap hiba javítása -- projekt ID-t regexp-el ki kell szedni, ha több van egy listát feldobni +* projekt ID-t regexp-el ki kell szedni, ha több van egy listát feldobni invoiceHead/invoiceDetail/additionalInvoiceData invoiceHead/invoiceDetail/conventionalInvoiceInfo/orderNumbers invoiceHead/invoiceDetail/conventionalInvoiceInfo/contractNumbers invoiceHead/invoiceDetail/conventionalInvoiceInfo/customerCompanyCodes invoiceHead/invoiceDetail/conventionalInvoiceInfo/projectNumbers - NAV számla lekérdezés folytatólagossága (meg kell jegyezni, mi volt az utolsó elem), a kezdő dátum (napok száma) konfigurálható legyen? -- távlati: autorizáció -- távlati: dokumentum kezelés szétválasztása 0.1.7 * A számla importhoz tartozó menüpontok jelezzék, ha van feladat 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 14ac83b..6717eda 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 @@ -41,6 +41,8 @@ public class InvoiceRepositorySearchImpl implements InvoiceRepositorySearch { if (filter.isPaid()) { predicates.add(cb.isTrue(root.get("paid"))); + } else { + predicates.add(cb.isFalse(root.get("paid"))); } if (Objects.nonNull(filter.getPaymentDeadLineFrom())) { diff --git a/lis-db/src/main/java/hu/user/lis/db/repository/ProjectRepository.java b/lis-db/src/main/java/hu/user/lis/db/repository/ProjectRepository.java index 9fcbfaa..5806ee3 100644 --- a/lis-db/src/main/java/hu/user/lis/db/repository/ProjectRepository.java +++ b/lis-db/src/main/java/hu/user/lis/db/repository/ProjectRepository.java @@ -4,11 +4,14 @@ import hu.user.lis.db.Project; import org.springframework.data.jpa.repository.JpaRepository; import java.util.List; +import java.util.Optional; public interface ProjectRepository extends JpaRepository, ProjectRepositorySearch { List findByHumanIdLikeOrderByHumanIdDesc(String yearSearch); + Optional findByHumanId(String humanId); + Project findFirstByHumanIdLikeOrderByHumanIdDesc(String yearSearch); } diff --git a/lis-ui/src/main/java/hu/user/lis/ui/converter/ListStringToStringConverter.java b/lis-ui/src/main/java/hu/user/lis/ui/converter/ListStringToStringConverter.java new file mode 100644 index 0000000..ad55f0e --- /dev/null +++ b/lis-ui/src/main/java/hu/user/lis/ui/converter/ListStringToStringConverter.java @@ -0,0 +1,20 @@ +package hu.user.lis.ui.converter; + +import org.apache.commons.lang3.StringUtils; +import org.zkoss.bind.BindContext; +import org.zkoss.bind.Converter; +import org.zkoss.zul.Listcell; + +import java.util.List; + +public class ListStringToStringConverter implements Converter, Listcell> { + @Override + public String coerceToUi(List list, Listcell listCell, BindContext bindContext) { + return StringUtils.join(list, ", "); + } + + @Override + public List coerceToBean(String data, Listcell listCell, BindContext bindContext) { + return null; + } +} diff --git a/lis-ui/src/main/java/hu/user/lis/ui/editor/ImportInvoiceAssignEditorModel.java b/lis-ui/src/main/java/hu/user/lis/ui/editor/ImportInvoiceAssignEditorModel.java index b303ec3..ee7ac4c 100644 --- a/lis-ui/src/main/java/hu/user/lis/ui/editor/ImportInvoiceAssignEditorModel.java +++ b/lis-ui/src/main/java/hu/user/lis/ui/editor/ImportInvoiceAssignEditorModel.java @@ -3,6 +3,7 @@ package hu.user.lis.ui.editor; import hu.user.lis.db.Invoice; import hu.user.lis.db.Partner; import hu.user.lis.db.Project; +import hu.user.lis.db.repository.ProjectRepository; import hu.user.lis.ui.data.PartnersDataModel; import hu.user.lis.ui.editor.common.Editors; import lombok.Getter; @@ -10,23 +11,34 @@ import lombok.Setter; import lombok.extern.log4j.Log4j2; import org.zkoss.bind.annotation.*; import org.zkoss.zk.ui.Component; +import org.zkoss.zk.ui.Executions; import org.zkoss.zk.ui.select.annotation.WireVariable; +import org.zkoss.zk.ui.util.Notification; +import java.util.List; import java.util.Objects; +import java.util.Optional; @Log4j2 public class ImportInvoiceAssignEditorModel extends InvoiceEditorModel { @WireVariable - PartnersDataModel partnersDataModel; + private PartnersDataModel partnersDataModel; + + @WireVariable + private ProjectRepository projectRepository; @Getter @Setter - boolean canEditPartner; + private boolean canEditPartner; + + @Getter + private List projectSuggestions; @Init @Override public void init() { super.init(); + projectSuggestions = (List) Executions.getCurrent().getArg().get("projectSuggestions"); canEditPartner = Objects.isNull(getFormDocument().getPartner().getId()); } @@ -50,4 +62,17 @@ public class ImportInvoiceAssignEditorModel extends InvoiceEditorModel { Partner entity = partnersDataModel.clone(getFormDocument().getPartner()); Editors.doEdit(Editors.PARTNER, entity, modifiedEntity -> getFormDocument().setPartner(modifiedEntity)); } + + @Command + public void selectSuggestedProject(@BindingParam("humanId") String humanId) { + Optional opHumanId = projectRepository.findByHumanId(humanId); + if (opHumanId.isPresent()) { + getFormDocument().setProject(opHumanId.get()); + getEntitySelectorRouter().configureSelector(Project.class, getFormDocument(), "project"); + validate(); + } else { + Notification.show("Nincs projekt ezen a számon: " + humanId, true); + } + } + } diff --git a/lis-ui/src/main/java/hu/user/lis/ui/editor/common/Editors.java b/lis-ui/src/main/java/hu/user/lis/ui/editor/common/Editors.java index 6336065..a4a82ce 100644 --- a/lis-ui/src/main/java/hu/user/lis/ui/editor/common/Editors.java +++ b/lis-ui/src/main/java/hu/user/lis/ui/editor/common/Editors.java @@ -23,7 +23,7 @@ public class Editors { } public static void doEdit(String page, E entity, E original, EditCompleted editCompleted) { - Map arg; + Map arg; if (Objects.isNull(entity)) { //header double click return; @@ -34,6 +34,11 @@ public class Editors { } else { arg = ImmutableMap.of("formDocument", entity, "origDocument", original); } + + doEdit(page, arg, editCompleted); + } + + public static void doEdit(String page, Map arg, EditCompleted editCompleted) { Window editorWindow = (Window) Executions.createComponents(page, null, arg); editorWindow.addEventListener("onClose", e -> { if (e.getData() != null) { diff --git a/lis-ui/src/main/java/hu/user/lis/ui/view/AssignInvoicesViewModel.java b/lis-ui/src/main/java/hu/user/lis/ui/view/AssignInvoicesViewModel.java index 7fe62d0..45a4076 100644 --- a/lis-ui/src/main/java/hu/user/lis/ui/view/AssignInvoicesViewModel.java +++ b/lis-ui/src/main/java/hu/user/lis/ui/view/AssignInvoicesViewModel.java @@ -5,6 +5,7 @@ import hu.user.lis.db.Invoice; import hu.user.lis.ui.Constants; import hu.user.lis.ui.data.AssignInvoicesDataModel; import hu.user.lis.ui.data.common.CachedSpringDataModel; +import hu.user.lis.ui.editor.common.EditCompleted; import hu.user.lis.ui.editor.common.Editors; import hu.user.lis.ui.event.EventBus; import hu.user.lis.ui.event.ProcessEventRouter; @@ -23,6 +24,9 @@ import org.zkoss.zk.ui.select.annotation.VariableResolver; import org.zkoss.zk.ui.select.annotation.WireVariable; import org.zkoss.zkplus.spring.DelegatingVariableResolver; +import java.util.List; +import java.util.Map; + @Getter @Log4j2 @VariableResolver(DelegatingVariableResolver.class) @@ -67,7 +71,9 @@ public class AssignInvoicesViewModel extends EntityViewModel impleme @Command public void onHandleTask() { Invoice entity = (Invoice) getSelectedEntity().get("invoiceEntity"); - Editors.doEdit(Editors.IMPORT_INVOICE_ASSIGN, entity, modifiedEntity -> { + List projectSuggestions = (List) getSelectedEntity().get("projectSuggestions"); + Map arg = ImmutableMap.of("formDocument", entity, "projectSuggestions", projectSuggestions); + Editors.doEdit(Editors.IMPORT_INVOICE_ASSIGN, arg, (EditCompleted) modifiedEntity -> { assignInvoicesDataModel.completeTask(getSelectedEntity(), ImmutableMap.of("invoiceEntity", modifiedEntity)); onRefresh(); }); diff --git a/lis-ui/src/main/java/hu/user/lis/ui/view/InvoicePaymentViewModel.java b/lis-ui/src/main/java/hu/user/lis/ui/view/InvoicePaymentViewModel.java index 001fe74..2f0225a 100644 --- a/lis-ui/src/main/java/hu/user/lis/ui/view/InvoicePaymentViewModel.java +++ b/lis-ui/src/main/java/hu/user/lis/ui/view/InvoicePaymentViewModel.java @@ -18,6 +18,7 @@ import org.zkoss.bind.annotation.Command; import org.zkoss.bind.annotation.Init; import org.zkoss.bind.annotation.NotifyChange; import org.zkoss.zk.ui.select.annotation.WireVariable; +import org.zkoss.zk.ui.util.Notification; import org.zkoss.zul.ListModelList; import java.util.List; @@ -98,7 +99,7 @@ public class InvoicePaymentViewModel extends EntityViewModel { List invoices = invoiceRepository.findByHumanId(invoiceNumber); if (invoices.isEmpty()) { setPartnerRequired(false); - //show message + Notification.show("Nem található számla: " + invoiceNumber, true); } else { if (invoices.size() == 1) { setPartnerRequired(false); 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 a3da68a..0bc1535 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 @@ -21,7 +21,8 @@ import org.zkoss.zk.ui.event.Event; import org.zkoss.zk.ui.event.EventListener; import org.zkoss.zk.ui.select.annotation.WireVariable; -import java.util.Objects; +import java.util.Arrays; +import java.util.List; import static hu.user.lis.ui.data.common.CachedDataModel.ASCENDING; import static hu.user.lis.ui.data.common.CachedDataModel.NATURAL; @@ -30,6 +31,7 @@ import static hu.user.lis.ui.data.common.CachedDataModel.NATURAL; public class InvoicesViewModel extends EntityViewModel implements EventListener { @Getter private final InvoiceFilter invoiceFilter = InvoiceFilter.builder().incoming(true).build(); + List refreshTriggerProperties = Arrays.asList("paymentDeadLineFrom", "paymentDeadLineTo", "paid", "incoming"); @WireVariable private EventBus eventBus; @Getter @@ -47,10 +49,11 @@ public class InvoicesViewModel extends EntityViewModel implements Event eventBus.registerForBinding(this); refresh(); addColumns(ImmutableMap.of( - "partner.name", ASCENDING, + "partner.humanId", NATURAL, + "partner.name", NATURAL, "partner.vatNr", NATURAL, "project.name", NATURAL, - "paymentDeadline", NATURAL, + "paymentDeadline", ASCENDING, "grossAmount", NATURAL, "currency", NATURAL, "incoming", NATURAL @@ -84,7 +87,6 @@ public class InvoicesViewModel extends EntityViewModel implements Event public void setIncoming(@BindingParam("incoming") boolean value) { invoiceFilter.setIncoming(value); BindUtils.postNotifyChange(null, null, invoiceFilter, "incoming"); - refresh(); } @Command @@ -96,11 +98,8 @@ public class InvoicesViewModel extends EntityViewModel implements Event public void onEvent(Event evt) throws Exception { if (evt instanceof PropertyChangeEvent) { PropertyChangeEvent propertyEvent = (PropertyChangeEvent) evt; - if (Objects.nonNull(propertyEvent.getBase()) && propertyEvent.getBase().equals(this)) { - if ("invoiceFilter.project".equals(propertyEvent.getProperty()) || - "invoiceFilter.partner".equals(propertyEvent.getProperty())) { - refresh(); - } + if (invoiceFilter.equals(propertyEvent.getBase())) { + refresh(); } } diff --git a/lis-ui/src/main/resources/metainfo/zk/zk.xml b/lis-ui/src/main/resources/metainfo/zk/zk.xml index 04e41f1..3d7fd40 100644 --- a/lis-ui/src/main/resources/metainfo/zk/zk.xml +++ b/lis-ui/src/main/resources/metainfo/zk/zk.xml @@ -41,6 +41,8 @@ org.zkoss.theme.preferred silvertail + + org.zkoss.zul.grid.rod diff --git a/lis-ui/src/main/resources/web/editor/import-invoice-approve-editor.zul b/lis-ui/src/main/resources/web/editor/import-invoice-approve-editor.zul index becc5e5..a2de64f 100644 --- a/lis-ui/src/main/resources/web/editor/import-invoice-approve-editor.zul +++ b/lis-ui/src/main/resources/web/editor/import-invoice-approve-editor.zul @@ -30,7 +30,8 @@