From: Vásáry Dániel Date: Thu, 15 Feb 2024 23:05:21 +0000 (+0100) Subject: Manual project invoice load/save X-Git-Url: http://git.useribm.hu/?a=commitdiff_plain;h=e4d7673d8e4b1f53553c6b73151299b6432ca362;p=sly-crm.git Manual project invoice load/save --- diff --git a/lis-db/src/main/java/hu/user/lis/db/Project.java b/lis-db/src/main/java/hu/user/lis/db/Project.java index daab3ae..4e0b93e 100644 --- a/lis-db/src/main/java/hu/user/lis/db/Project.java +++ b/lis-db/src/main/java/hu/user/lis/db/Project.java @@ -8,7 +8,6 @@ import lombok.Setter; import lombok.experimental.SuperBuilder; import org.hibernate.annotations.Fetch; import org.hibernate.annotations.FetchMode; -import org.hibernate.annotations.Where; import javax.persistence.*; import java.util.List; @@ -30,20 +29,22 @@ public class Project extends IdEntity { @JsonIncludeProperties({"id"}) private Partner partner; - @OneToMany(targetEntity = IncomingInvoice.class, cascade = CascadeType.ALL, fetch = FetchType.EAGER) - @JoinColumn(name = "project_id", referencedColumnName = "id") - @Where(clause = "incoming=1") - @Fetch(FetchMode.JOIN) - @OrderColumn(name = "pos") - @JsonIncludeProperties({"id"}) + // @OneToMany(targetEntity = IncomingInvoice.class, cascade = CascadeType.ALL, fetch = FetchType.EAGER) +// @JoinColumn(name = "project_id", referencedColumnName = "id") +// @Where(clause = "incoming=1") +// @Fetch(FetchMode.JOIN) +// @OrderColumn(name = "pos") +// @JsonIncludeProperties({"id"}) + @Transient private List incomingInvoices; - @OneToMany(targetEntity = OutgoingInvoice.class, cascade = CascadeType.ALL, fetch = FetchType.EAGER) - @JoinColumn(name = "project_id", referencedColumnName = "id") - @Where(clause = "incoming=0") - @Fetch(FetchMode.JOIN) - @OrderColumn(name = "pos") - @JsonIncludeProperties({"id"}) + // @OneToMany(targetEntity = OutgoingInvoice.class, cascade = CascadeType.ALL, fetch = FetchType.EAGER) +// @JoinColumn(name = "project_id", referencedColumnName = "id") +// @Where(clause = "incoming=0") +// @Fetch(FetchMode.JOIN) +// @OrderColumn(name = "pos") +// @JsonIncludeProperties({"id"}) + @Transient private List outgoingInvoices; @OneToMany(targetEntity = Treasury.class, cascade = CascadeType.ALL, fetch = FetchType.EAGER, orphanRemoval = true) diff --git a/lis-db/src/main/java/hu/user/lis/db/repository/InvoiceRepository.java b/lis-db/src/main/java/hu/user/lis/db/repository/InvoiceRepository.java index 979bf99..4413ac1 100644 --- a/lis-db/src/main/java/hu/user/lis/db/repository/InvoiceRepository.java +++ b/lis-db/src/main/java/hu/user/lis/db/repository/InvoiceRepository.java @@ -1,7 +1,6 @@ package hu.user.lis.db.repository; -import hu.user.lis.db.Invoice; -import hu.user.lis.db.Partner; +import hu.user.lis.db.*; import org.springframework.data.jpa.repository.JpaRepository; import java.util.List; @@ -13,4 +12,7 @@ public interface InvoiceRepository extends JpaRepository, Invoice Optional findByHumanIdAndPartnerAndPlanned(String humanId, Partner partner, boolean planned); + List findAllByProjectAndIncomingIsTrue(Project project); + + List findAllByProjectAndIncomingIsFalse(Project project); } diff --git a/lis-ui/src/main/java/hu/user/lis/ui/data/ProjectsDataModel.java b/lis-ui/src/main/java/hu/user/lis/ui/data/ProjectsDataModel.java index 1fbd6e3..2793a50 100644 --- a/lis-ui/src/main/java/hu/user/lis/ui/data/ProjectsDataModel.java +++ b/lis-ui/src/main/java/hu/user/lis/ui/data/ProjectsDataModel.java @@ -107,7 +107,14 @@ public class ProjectsDataModel extends CachedSpringDataModel { } public Project save(Project selectedEntity) { - return projectRepository.save(selectedEntity); + Project result = projectRepository.save(selectedEntity); + selectedEntity.getIncomingInvoices().forEach(i -> i.setProject(selectedEntity)); + selectedEntity.getOutgoingInvoices().forEach(i -> i.setProject(selectedEntity)); + invoiceRepository.saveAll(selectedEntity.getIncomingInvoices()); + invoiceRepository.saveAll(selectedEntity.getOutgoingInvoices()); + result.setIncomingInvoices(selectedEntity.getIncomingInvoices()); + result.setOutgoingInvoices(selectedEntity.getOutgoingInvoices()); + return result; } public Project getById(Long id) { diff --git a/lis-ui/src/main/java/hu/user/lis/ui/editor/ProjectEditorModel.java b/lis-ui/src/main/java/hu/user/lis/ui/editor/ProjectEditorModel.java index 91b4fdd..9b2de09 100644 --- a/lis-ui/src/main/java/hu/user/lis/ui/editor/ProjectEditorModel.java +++ b/lis-ui/src/main/java/hu/user/lis/ui/editor/ProjectEditorModel.java @@ -2,6 +2,7 @@ package hu.user.lis.ui.editor; import com.google.common.collect.ImmutableMap; import hu.user.lis.db.*; +import hu.user.lis.db.repository.InvoiceRepository; import hu.user.lis.service.data.EntityDocumentAction; import hu.user.lis.service.data.EntityDocumentService; import hu.user.lis.ui.Constants; @@ -46,6 +47,8 @@ public class ProjectEditorModel extends EntityEditorModel { @WireVariable private InvoiceDataModel invoiceDataModel; @WireVariable + private InvoiceRepository invoiceRepository; + @WireVariable private TreasuryDataModel treasuryDataModel; @Getter @Setter @@ -125,10 +128,16 @@ public class ProjectEditorModel extends EntityEditorModel { Long id = (Long) data; Clients.evalJavaScript(String.format("pushNav('/project/%d')", id)); log.info("Loading entity {} to editor", id); - setFormDocument(projectsDataModel.getById(id)); + Project project = projectsDataModel.getById(id); + List incoming = invoiceRepository.findAllByProjectAndIncomingIsTrue(project); + List outgoing = invoiceRepository.findAllByProjectAndIncomingIsFalse(project); + project.setIncomingInvoices(incoming); + project.setOutgoingInvoices(outgoing); + setFormDocument(project); setOrigDocument(projectsDataModel.clone(getFormDocument())); } projectFormValidator.validate(getFormDocument()); + BindUtils.postNotifyChange(this, "formDocument"); }