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;
@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<IncomingInvoice> 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<OutgoingInvoice> outgoingInvoices;
@OneToMany(targetEntity = Treasury.class, cascade = CascadeType.ALL, fetch = FetchType.EAGER, orphanRemoval = true)
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;
Optional<Invoice> findByHumanIdAndPartnerAndPlanned(String humanId, Partner partner, boolean planned);
+ List<IncomingInvoice> findAllByProjectAndIncomingIsTrue(Project project);
+
+ List<OutgoingInvoice> findAllByProjectAndIncomingIsFalse(Project project);
}
}
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) {
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;
@WireVariable
private InvoiceDataModel invoiceDataModel;
@WireVariable
+ private InvoiceRepository invoiceRepository;
+ @WireVariable
private TreasuryDataModel treasuryDataModel;
@Getter
@Setter
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<IncomingInvoice> incoming = invoiceRepository.findAllByProjectAndIncomingIsTrue(project);
+ List<OutgoingInvoice> outgoing = invoiceRepository.findAllByProjectAndIncomingIsFalse(project);
+ project.setIncomingInvoices(incoming);
+ project.setOutgoingInvoices(outgoing);
+ setFormDocument(project);
setOrigDocument(projectsDataModel.clone(getFormDocument()));
}
projectFormValidator.validate(getFormDocument());
+
BindUtils.postNotifyChange(this, "formDocument");
}