Basic project decouple changes project-decouple
authorVásáry Dániel <vasary@elgekko.net>
Thu, 15 Feb 2024 21:13:00 +0000 (22:13 +0100)
committerVásáry Dániel <vasary@elgekko.net>
Thu, 15 Feb 2024 21:13:00 +0000 (22:13 +0100)
18 files changed:
lis-app/src/test/java/hu/user/lis/ReflectionsIT.java
lis-app/src/test/java/hu/user/lis/RepositoryIT.java
lis-db/src/main/java/hu/user/lis/db/Invoice.java
lis-db/src/main/java/hu/user/lis/db/Project.java
lis-db/src/main/java/hu/user/lis/db/Treasury.java
lis-db/src/main/java/hu/user/lis/db/repository/IncomingInvoiceRepository.java [new file with mode: 0644]
lis-db/src/main/java/hu/user/lis/db/repository/TreasuryRepository.java
lis-service/src/main/java/hu/user/lis/service/api/ProjectApi.java
lis-service/src/main/java/hu/user/lis/service/data/ProjectServiceImpl.java
lis-service/src/main/java/hu/user/lis/service/dataimport/IncomingInvoiceXlsProcessor.java
lis-service/src/main/java/hu/user/lis/service/dataimport/OutgoingInvoiceXlsProcessor.java
lis-ui/src/main/java/hu/user/lis/ui/data/IncomeMarginsDataModel.java
lis-ui/src/main/java/hu/user/lis/ui/data/InvoiceDataModel.java
lis-ui/src/main/java/hu/user/lis/ui/data/ProjectsDataModel.java
lis-ui/src/main/java/hu/user/lis/ui/editor/ProjectEditorModel.java
lis-ui/src/main/resources/web/editor/project/incoming-invoices.zul
lis-ui/src/main/resources/web/editor/project/outgoing-invoices.zul
lis-ui/src/main/resources/web/editor/project/treasuries.zul

index 38c7bc49a00ac619b2f7345e441271a22b92c05f..728b6661d9102f3603624cb66f3fb83482be4b31 100644 (file)
@@ -7,7 +7,6 @@ package hu.user.lis;
 
 import hu.user.lis.db.Associate;
 import hu.user.lis.db.Project;
-import hu.user.lis.db.Treasury;
 import hu.user.lis.service.data.EntityDataService;
 import lombok.extern.log4j.Log4j2;
 import org.apache.commons.lang3.SerializationUtils;
@@ -20,12 +19,9 @@ import org.springframework.context.annotation.ComponentScan;
 import org.springframework.test.context.junit4.SpringRunner;
 
 import java.util.Arrays;
-import java.util.Collections;
 import java.util.List;
 
 import static org.assertj.core.api.Assertions.assertThat;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
 
 
 @Log4j2
@@ -68,46 +64,4 @@ public class ReflectionsIT {
         Assertions.assertNotEquals(associate, clone);
     }
 
-    @Test
-    public void testOneToManyMemberChanged() {
-        Treasury treasury = Treasury.builder()
-                .id(1L)
-                .humanId("Test")
-                .build();
-        Project project = Project.builder()
-                .id(1L)
-                .treasuries(Collections.singletonList(treasury))
-                .build();
-        Project clone = SerializationUtils.clone(project);
-        Treasury cloneTreasury = (Treasury) clone.getTreasuries().toArray()[0];
-        cloneTreasury.setId(2L);
-        assertFalse(entityDataService.areEquals(project, clone));
-    }
-
-    @Test
-    public void testOneToManyMemberOrderEquals() {
-        Treasury treasury1 = Treasury.builder()
-                .id(1L)
-                .humanId("Test1")
-                .build();
-        Treasury treasury2 = Treasury.builder()
-                .id(2L)
-                .humanId("Test2")
-                .build();
-        Project project = Project.builder()
-                .id(1L)
-                .treasuries(Arrays.asList(treasury1, treasury2))
-                .build();
-        Project clone = SerializationUtils.clone(project);
-        Treasury treasury3 = Treasury.builder()
-                .id(1L)
-                .humanId("Test1")
-                .build();
-        Treasury treasury4 = Treasury.builder()
-                .id(2L)
-                .humanId("Test2")
-                .build();
-        clone.setTreasuries(Arrays.asList(treasury4, treasury3));
-        assertTrue(entityDataService.areEquals(project, clone));
-    }
 }
index 64753718d8cc38cae0642eea913d574619630925..5764995f4bcd3a171e1d5ad2e9cc9bd7674ba931 100644 (file)
@@ -19,7 +19,6 @@ import org.springframework.test.context.ActiveProfiles;
 import org.springframework.test.context.TestPropertySource;
 import org.springframework.test.context.junit4.SpringRunner;
 
-import javax.persistence.EntityNotFoundException;
 import java.util.Arrays;
 import java.util.List;
 
@@ -52,6 +51,8 @@ public class RepositoryIT {
 
     @Autowired
     private InvoiceRepository invoiceRepository;
+    @Autowired
+    private IncomingInvoiceRepository incomingInvoiceRepository;
 
     @Test
     public void testRepositoryCapabilities() {
@@ -68,45 +69,13 @@ public class RepositoryIT {
     @Test
     public void listProjects() {
         List<Project> allItems = projectRepository.findAll();
-        log.info("Found {} items", allItems.size());
-    }
 
-    @Test
-    public void createProjectWithTreasury() {
-        Project project = projectService.createNew();
-        project.setProjectStatus(null);
+        allItems.forEach(project -> {
+            List<IncomingInvoice> incomingInvoices = incomingInvoiceRepository.findAllByProjectOrderByPos(project);
+            log.info("Found {} items", incomingInvoices.size());
+        });
 
-        Treasury treasury = treasuryService.createNew();
-        project.getTreasuries().add(treasury);
-        projectRepository.save(project);
-
-        Project persistedProject = projectRepository.findById(project.getId()).orElseThrow(EntityNotFoundException::new);
-        assertEquals(1, persistedProject.getTreasuries().size());
-
-        projectRepository.deleteAll();
-    }
-
-    @Test
-    public void createProjectWithIncomingInvoice() {
-        Project project = projectService.createNew();
-        project.setProjectStatus(null);
-
-        IncomingInvoice invoice = IncomingInvoice.builder()
-                .incoming(true)
-                .planned(true)
-                .currency(Currency.HUF)
-                .netAmount(1)
-                .grossAmount(1)
-                .vatAmount(0.5)
-                .build();
-        project.getIncomingInvoices().add(invoice);
-        projectRepository.save(project);
-
-        Project persistedProject = projectRepository.findById(project.getId()).orElseThrow(EntityNotFoundException::new);
-        assertEquals(1, persistedProject.getIncomingInvoices().size());
-        assertEquals(0, persistedProject.getOutgoingInvoices().size());
-
-        projectRepository.deleteAll();
+        log.info("Found {} items", allItems.size());
     }
 
     @Test
index 8c5fe92172fcbbffd7f72227c95a4f810d7b3500..00990ea8fb17e8e6616f11cff74c3e645f6dc5f5 100644 (file)
@@ -57,4 +57,5 @@ public class Invoice extends IdEntity {
 
     private String technicalId;
 
+    private int pos;
 }
index daab3ae5bdd28a4098254f02a5565de53ad99d21..49d9a22ae4c4824e04ef00a929661bd2506283ff 100644 (file)
@@ -8,10 +8,10 @@ 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;
+import javax.persistence.Entity;
+import javax.persistence.JoinColumn;
+import javax.persistence.ManyToOne;
 
 @Getter
 @Setter
@@ -30,28 +30,28 @@ 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"})
-    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"})
-    private List<OutgoingInvoice> outgoingInvoices;
-
-    @OneToMany(targetEntity = Treasury.class, cascade = CascadeType.ALL, fetch = FetchType.EAGER, orphanRemoval = true)
-    @JoinColumn(name = "project_id", referencedColumnName = "id")
-    @Fetch(FetchMode.JOIN)
-    @OrderColumn(name = "pos")
-    @JsonIncludeProperties({"id"})
-    private List<Treasury> treasuries;
+//    @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"})
+//    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"})
+//    private List<OutgoingInvoice> outgoingInvoices;
+//
+//    @OneToMany(targetEntity = Treasury.class, cascade = CascadeType.ALL, fetch = FetchType.EAGER, orphanRemoval = true)
+//    @JoinColumn(name = "project_id", referencedColumnName = "id")
+//    @Fetch(FetchMode.JOIN)
+//    @OrderColumn(name = "pos")
+//    @JsonIncludeProperties({"id"})
+//    private List<Treasury> treasuries;
 
     private String name;
 
index a0adcd729913d039b4df0599396b310d61a6407b..600b6ed487fd04807b1635815e54a4ac6815a92c 100644 (file)
@@ -41,4 +41,5 @@ public class Treasury extends IdEntity {
 
     private String technicalId;
 
+    private int pos;
 }
diff --git a/lis-db/src/main/java/hu/user/lis/db/repository/IncomingInvoiceRepository.java b/lis-db/src/main/java/hu/user/lis/db/repository/IncomingInvoiceRepository.java
new file mode 100644 (file)
index 0000000..b9da357
--- /dev/null
@@ -0,0 +1,13 @@
+package hu.user.lis.db.repository;
+
+import hu.user.lis.db.IncomingInvoice;
+import hu.user.lis.db.Project;
+import org.springframework.data.jpa.repository.JpaRepository;
+
+import java.util.List;
+
+public interface IncomingInvoiceRepository extends JpaRepository<IncomingInvoice, Long> {
+
+    List<IncomingInvoice> findAllByProjectOrderByPos(Project project);
+
+}
index 13a16c21d07b44e725b74e7379f17e9ac85bae92..54d64cc7257a9eb099df1eb7071468ae23949abe 100644 (file)
@@ -1,8 +1,13 @@
 package hu.user.lis.db.repository;
 
+import hu.user.lis.db.Project;
 import hu.user.lis.db.Treasury;
 import org.springframework.data.jpa.repository.JpaRepository;
 
+import java.util.List;
+
 public interface TreasuryRepository extends JpaRepository<Treasury, Long> {
 
+    List<Treasury> findAllByProjectOrderByPos(Project project);
+
 }
index e1827beb1abd396981e48be90570f11c79a98019..edb3135341e4fbeddbafe0b551a91159a7758dd0 100644 (file)
@@ -1,9 +1,6 @@
 package hu.user.lis.service.api;
 
-import hu.user.lis.db.IncomingInvoice;
-import hu.user.lis.db.OutgoingInvoice;
 import hu.user.lis.db.Project;
-import hu.user.lis.db.Treasury;
 import hu.user.lis.db.repository.InvoiceRepository;
 import hu.user.lis.db.repository.ProjectRepository;
 import hu.user.lis.db.repository.TreasuryRepository;
@@ -14,7 +11,6 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
 import java.util.List;
-import java.util.Objects;
 
 @Log4j2
 @RestController
@@ -41,29 +37,26 @@ public class ProjectApi extends DbApi<Project, ProjectRepository, ProjectService
 
     @Override
     protected void afterSave(List<Project> entities) {
-        entities.forEach(p -> {
-            List<IncomingInvoice> incomingInvoices = p.getIncomingInvoices();
-            if (Objects.nonNull(incomingInvoices)) {
-                incomingInvoices.forEach(i -> {
-//                    i.setProject(p);
-                    invoiceRepository.save(i);
-                });
-            }
-
-            List<OutgoingInvoice> outgoingInvoices = p.getOutgoingInvoices();
-            if (Objects.nonNull(outgoingInvoices)) {
-                outgoingInvoices.forEach(i -> {
-//                    i.setProject(p);
-                    invoiceRepository.save(i);
-                });
-            }
-
-            List<Treasury> treasuries = p.getTreasuries();
-            treasuries.forEach(t -> {
-//                t.setProject(p);
-                treasuryRepository.save(t);
-            });
-        });
+//        entities.forEach(p -> {
+//            List<IncomingInvoice> incomingInvoices = p.getIncomingInvoices();
+//            if (Objects.nonNull(incomingInvoices)) {
+//                incomingInvoices.forEach(i -> {
+//                    invoiceRepository.save(i);
+//                });
+//            }
+//
+//            List<OutgoingInvoice> outgoingInvoices = p.getOutgoingInvoices();
+//            if (Objects.nonNull(outgoingInvoices)) {
+//                outgoingInvoices.forEach(i -> {
+//                    invoiceRepository.save(i);
+//                });
+//            }
+//
+//            List<Treasury> treasuries = p.getTreasuries();
+//            treasuries.forEach(t -> {
+//                treasuryRepository.save(t);
+//            });
+//        });
     }
 
 }
index e6518b3f822e9651ddfc59e06bd3c31c4baf2230..529c85d568bb443158f57cea3643049878be947c 100644 (file)
@@ -64,7 +64,7 @@ public class ProjectServiceImpl extends DataServiceImpl<Project> implements Proj
                 .projectStatus(projectStatus)
 //                .incomingInvoices(new HashSet<>())
 //                .outgoingInvoices(new HashSet<>())
-                .treasuries(new ArrayList<>())
+//                .treasuries(new ArrayList<>())
                 .active(true)
                 .build();
     }
@@ -105,7 +105,7 @@ public class ProjectServiceImpl extends DataServiceImpl<Project> implements Proj
                     .partner(partner)
 //                    .incomingInvoices(invoiceService.getRandom(true))
 //                    .outgoingInvoices(invoiceService.getRandom(false))
-                    .treasuries(new ArrayList<>())
+//                    .treasuries(new ArrayList<>())
                     .build();
             result.add(entity);
         }
index af838e0b9988880319f0256a69d1b45d997f46cf..c93dc1537fcc08fad0a5dd7bf8e24c36a0417500 100644 (file)
@@ -2,7 +2,6 @@ package hu.user.lis.service.dataimport;
 
 import hu.user.lis.db.IncomingInvoice;
 import hu.user.lis.db.InvoiceStatus;
-import hu.user.lis.db.Project;
 import hu.user.lis.db.repository.InvoiceRepository;
 import hu.user.lis.db.repository.ProjectRepository;
 import hu.user.lis.service.dataimport.mapper.InvoiceXlsMapper;
@@ -11,7 +10,6 @@ import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
-import java.util.ArrayList;
 import java.util.Map;
 import java.util.Objects;
 
@@ -51,14 +49,14 @@ public class IncomingInvoiceXlsProcessor extends XlsProcessor<IncomingInvoice> {
     @Override
     protected void process(IncomingInvoice entity) {
         invoiceRepository.save(entity);
-        Project project = entity.getProject();
-        if (Objects.nonNull(project)) {
-            if (Objects.isNull(project.getIncomingInvoices())) {
-                project.setIncomingInvoices(new ArrayList<>());
-            }
-            project.getIncomingInvoices().add(entity);
-            projectRepository.save(project);
-        }
+//        Project project = entity.getProject();
+//        if (Objects.nonNull(project)) {
+//            if (Objects.isNull(project.getIncomingInvoices())) {
+//                project.setIncomingInvoices(new ArrayList<>());
+//            }
+//            project.getIncomingInvoices().add(entity);
+//            projectRepository.save(project);
+//        }
         log.info("Incoming invoice added: {}", entity.getHumanId());
     }
 
index 94ad14c50d8a10701e087a373edb57c9bf5c0da8..007eb7471e3fa96fe9dd6208630367b3aebcea6d 100644 (file)
@@ -2,7 +2,6 @@ package hu.user.lis.service.dataimport;
 
 import hu.user.lis.db.InvoiceStatus;
 import hu.user.lis.db.OutgoingInvoice;
-import hu.user.lis.db.Project;
 import hu.user.lis.db.repository.InvoiceRepository;
 import hu.user.lis.db.repository.ProjectRepository;
 import hu.user.lis.service.dataimport.mapper.InvoiceXlsMapper;
@@ -11,7 +10,6 @@ import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
-import java.util.ArrayList;
 import java.util.Map;
 import java.util.Objects;
 
@@ -50,14 +48,14 @@ public class OutgoingInvoiceXlsProcessor extends XlsProcessor<OutgoingInvoice> {
     @Override
     protected void process(OutgoingInvoice entity) {
         invoiceRepository.save(entity);
-        Project project = entity.getProject();
-        if (Objects.nonNull(project)) {
-            if (Objects.isNull(project.getOutgoingInvoices())) {
-                project.setOutgoingInvoices(new ArrayList<>());
-            }
-            project.getOutgoingInvoices().add(entity);
-            projectRepository.save(project);
-        }
+//        Project project = entity.getProject();
+//        if (Objects.nonNull(project)) {
+//            if (Objects.isNull(project.getOutgoingInvoices())) {
+//                project.setOutgoingInvoices(new ArrayList<>());
+//            }
+//            project.getOutgoingInvoices().add(entity);
+//            projectRepository.save(project);
+//        }
         log.info("Outgoing invoice added: {}", entity.getHumanId());
     }
 
index 78c4c2032276b949805a5545716a281d4db31e22..75eaa93883c841f75aac0349c8e4fcd2ed99434a 100644 (file)
@@ -15,24 +15,21 @@ import java.util.stream.Collectors;
 @Log4j2
 @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
 public class IncomeMarginsDataModel extends ArrayList<IncomeMargin> {
-    public void recalculate(Project project, ServiceRecordsDataModel serviceRecordsDataModel) {
+    public void recalculate(List<IncomingInvoice> incomingInvoices, List<OutgoingInvoice> outgoingInvoices, List<Treasury> treasuries, ServiceRecordsDataModel serviceRecordsDataModel) {
         clear();
-        Map<Currency, Double> balances = new HashMap<>();
-        List<OutgoingInvoice> outgoingInvoices = project.getOutgoingInvoices();
+        Map<Currency, Double> balances = new EnumMap<>(Currency.class);
         if (Objects.nonNull(outgoingInvoices)) {
             for (Invoice invoice : outgoingInvoices) {
                 addBalance(balances, invoice.getCurrency(), invoice.getNetAmount());
             }
         }
 
-        List<IncomingInvoice> incomingInvoices = project.getIncomingInvoices();
         if (Objects.nonNull(incomingInvoices)) {
             for (Invoice invoice : incomingInvoices) {
                 substractBalance(balances, invoice.getCurrency(), invoice.getNetAmount());
             }
         }
 
-        List<Treasury> treasuries = project.getTreasuries();
         if (Objects.nonNull(treasuries)) {
             for (Treasury treasury : treasuries) {
                 substractBalance(balances, treasury.getSellCurrency(), treasury.getSellAmount());
index a9e3d9d9b0bbd2eb9196b17acee15d0bd4515cf8..f5bc3c72da29422c474681010118ba18f8c85f82 100644 (file)
@@ -8,7 +8,6 @@ import hu.user.lis.db.repository.InvoiceRepository;
 import hu.user.lis.service.data.EntityDataService;
 import hu.user.lis.service.data.EntityDocumentAction;
 import hu.user.lis.service.data.EntityDocumentService;
-import hu.user.lis.service.data.InvoiceService;
 import lombok.extern.log4j.Log4j2;
 import org.apache.commons.lang3.RandomStringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -22,9 +21,6 @@ import java.util.List;
 @Log4j2
 public class InvoiceDataModel {
 
-    @Autowired
-    InvoiceService invoiceService;
-
     @Autowired
     InvoiceRepository invoiceRepository;
 
index 1fbd6e32a9cb3ddf954a6f949a0fc8a4c72b598a..278b4726fb1f56e875d5b81ea0736efd5653d8db 100644 (file)
@@ -1,9 +1,9 @@
 package hu.user.lis.ui.data;
 
-import hu.user.lis.db.Project;
-import hu.user.lis.db.ProjectStatus;
+import hu.user.lis.db.*;
 import hu.user.lis.db.repository.InvoiceRepository;
 import hu.user.lis.db.repository.ProjectRepository;
+import hu.user.lis.db.repository.TreasuryRepository;
 import hu.user.lis.service.data.EntityDataService;
 import hu.user.lis.ui.data.common.CachedSpringDataModel;
 import lombok.extern.log4j.Log4j2;
@@ -17,7 +17,6 @@ import org.zkoss.zul.FieldComparator;
 import javax.persistence.EntityNotFoundException;
 import java.text.DecimalFormat;
 import java.time.Year;
-import java.util.ArrayList;
 import java.util.List;
 import java.util.Objects;
 
@@ -31,6 +30,9 @@ public class ProjectsDataModel extends CachedSpringDataModel<Project> {
     @Autowired
     InvoiceRepository invoiceRepository;
 
+    @Autowired
+    TreasuryRepository treasuryRepository;
+
     @Autowired
     ProjectStatusDataModel projectStatusDataModel;
 
@@ -87,9 +89,6 @@ public class ProjectsDataModel extends CachedSpringDataModel<Project> {
         ProjectStatus projectStatus = projectStatusDataModel.getDefault();
         return Project.builder()
                 .projectStatus(projectStatus)
-                .incomingInvoices(new ArrayList<>())
-                .outgoingInvoices(new ArrayList<>())
-                .treasuries(new ArrayList<>())
                 .active(true)
                 .build();
     }
@@ -121,4 +120,17 @@ public class ProjectsDataModel extends CachedSpringDataModel<Project> {
     public void delete(Project selectedEntity) {
         projectRepository.delete(selectedEntity);
     }
+
+
+    public List<IncomingInvoice> getIncomingInvoices(Project project) {
+        return null;
+    }
+
+    public List<OutgoingInvoice> getOutgoingInvoices(Project project) {
+        return null;
+    }
+
+    public List<Treasury> getTreasuries(Project project) {
+        return null;
+    }
 }
index 91b4fdda0fd7d5a7e1352897e291330b50f9da6e..431ee1d636f42e6861dff685e2a054244e88460d 100644 (file)
@@ -27,16 +27,18 @@ import org.zkoss.zk.ui.util.Notification;
 import org.zkoss.zul.Panel;
 import org.zkoss.zul.Window;
 
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
+import java.util.*;
 
 @Log4j2
 public class ProjectEditorModel extends EntityEditorModel<Project> {
     private final Map<String, List<EntityDocumentAction>> invoiceDocumentActions = new HashMap<>();
     private final Map<String, List<EntityDocumentAction>> treasuryDocumentActions = new HashMap<>();
-
+    @Getter
+    private final List<IncomingInvoice> incomingInvoices = new ArrayList<>();
+    @Getter
+    private final List<OutgoingInvoice> outgoingInvoices = new ArrayList<>();
+    @Getter
+    private final List<Treasury> treasuries = new ArrayList<>();
     @Getter
     @Setter
     @WireVariable
@@ -82,7 +84,6 @@ public class ProjectEditorModel extends EntityEditorModel<Project> {
     private String partialAssociateName;
     @WireVariable
     private ProjectFormValidator projectFormValidator;
-
     @WireVariable
     private EntityDocumentService entityDocumentService;
 
@@ -112,11 +113,12 @@ public class ProjectEditorModel extends EntityEditorModel<Project> {
         initAssociates();
         serviceRecordsDataModel.search(getFormDocument(), true);
         getEntitySelectorRouter().configureSelector(Partner.class, getFormDocument(), "partner");
-        incomeMarginsDataModel.recalculate(getFormDocument(), serviceRecordsDataModel);
+        incomeMarginsDataModel.recalculate(incomingInvoices, outgoingInvoices, treasuries, serviceRecordsDataModel);
     }
 
 
-    private void initDocuments(Object data) {
+    //    @Transactional
+    public void initDocuments(Object data) {
         if (Objects.isNull(data)) {
             setFormDocument(projectsDataModel.createNew());
             getFormDocument().setHumanId(projectsDataModel.generateHumanId());
@@ -134,10 +136,9 @@ public class ProjectEditorModel extends EntityEditorModel<Project> {
 
     public void saveProject(Component notif) {
         boolean notify = Objects.isNull(getFormDocument().getId());
-        Project project = projectsDataModel.save(getFormDocument());
-        project.getIncomingInvoices().forEach(this::updateInvoiceFileChanges);
-        project.getOutgoingInvoices().forEach(this::updateInvoiceFileChanges);
-        project.getTreasuries().forEach(this::updateTreasuryFileChanges);
+        incomingInvoices.forEach(this::updateInvoiceFileChanges);
+        incomingInvoices.forEach(this::updateInvoiceFileChanges);
+        treasuries.forEach(this::updateTreasuryFileChanges);
         if (notify) {
             String msg = String.format("Sikeres projekt létrehozás %s azonosítóval.", getFormDocument().getHumanId());
             Notification.show(msg, "info", notif, "after_start", 3000, true);
@@ -199,7 +200,7 @@ public class ProjectEditorModel extends EntityEditorModel<Project> {
     private void incomingAdded(SaveEntityEvent<IncomingInvoice> event) {
         if (event.isSave()) {
             IncomingInvoice modifiedEntity = event.getData();
-            getFormDocument().getIncomingInvoices().add(modifiedEntity);
+            incomingInvoices.add(modifiedEntity);
             selectedIncomingInvoice = modifiedEntity;
             invoiceDocumentActions.put(modifiedEntity.getTechnicalId(), event.withAttachment().getActions());
             validate();
@@ -210,7 +211,6 @@ public class ProjectEditorModel extends EntityEditorModel<Project> {
 
     private void incomingModified(SaveEntityEvent<IncomingInvoice> event) {
         if (event.isSave()) {
-            List<IncomingInvoice> incomingInvoices = getFormDocument().getIncomingInvoices();
             incomingInvoices.remove(selectedIncomingInvoice);
             IncomingInvoice modifiedEntity = event.getData();
             incomingInvoices.add(modifiedEntity);
@@ -226,7 +226,7 @@ public class ProjectEditorModel extends EntityEditorModel<Project> {
     public void onRemoveIncoming() {
         if (Objects.nonNull(selectedIncomingInvoice)) {
             invoiceDocumentActions.remove(selectedIncomingInvoice.getTechnicalId());
-            getFormDocument().getIncomingInvoices().remove(selectedIncomingInvoice);
+            incomingInvoices.remove(selectedIncomingInvoice);
             selectedIncomingInvoice = null;
             validate();
             BindUtils.postNotifyChange(this, "selectedIncomingInvoice");
@@ -250,7 +250,7 @@ public class ProjectEditorModel extends EntityEditorModel<Project> {
     private void outgoingAdded(SaveEntityEvent<OutgoingInvoice> event) {
         if (event.isSave()) {
             OutgoingInvoice modifiedEntity = event.getData();
-            getFormDocument().getOutgoingInvoices().add(modifiedEntity);
+            outgoingInvoices.add(modifiedEntity);
             selectedOutgoingInvoice = modifiedEntity;
             invoiceDocumentActions.put(modifiedEntity.getTechnicalId(), event.withAttachment().getActions());
             validate();
@@ -262,7 +262,6 @@ public class ProjectEditorModel extends EntityEditorModel<Project> {
     private void outgoingModified(SaveEntityEvent<OutgoingInvoice> event) {
         if (event.isSave()) {
             OutgoingInvoice modifiedEntity = event.getData();
-            List<OutgoingInvoice> outgoingInvoices = getFormDocument().getOutgoingInvoices();
             outgoingInvoices.remove(selectedOutgoingInvoice);
             outgoingInvoices.add(modifiedEntity);
             selectedOutgoingInvoice = modifiedEntity;
@@ -277,7 +276,7 @@ public class ProjectEditorModel extends EntityEditorModel<Project> {
     public void onRemoveOutgoing() {
         if (Objects.nonNull(selectedOutgoingInvoice)) {
             invoiceDocumentActions.remove(selectedOutgoingInvoice.getTechnicalId());
-            getFormDocument().getOutgoingInvoices().remove(selectedOutgoingInvoice);
+            outgoingInvoices.remove(selectedOutgoingInvoice);
             selectedOutgoingInvoice = null;
             validate();
             BindUtils.postNotifyChange(this, "selectedOutgoingInvoice");
@@ -301,7 +300,7 @@ public class ProjectEditorModel extends EntityEditorModel<Project> {
     private void treasuryAdded(SaveEntityEvent<Treasury> event) {
         if (event.isSave()) {
             Treasury modifiedEntity = event.getData();
-            getFormDocument().getTreasuries().add(modifiedEntity);
+            treasuries.add(modifiedEntity);
             selectedTreasury = modifiedEntity;
             treasuryDocumentActions.put(modifiedEntity.getTechnicalId(), event.withAttachment().getActions());
             validate();
@@ -313,7 +312,6 @@ public class ProjectEditorModel extends EntityEditorModel<Project> {
     private void treasuryModified(SaveEntityEvent<Treasury> event) {
         if (event.isSave()) {
             Treasury modifiedEntity = event.getData();
-            List<Treasury> treasuries = getFormDocument().getTreasuries();
             treasuries.remove(selectedTreasury);
             treasuries.add(modifiedEntity);
             selectedTreasury = modifiedEntity;
@@ -328,7 +326,7 @@ public class ProjectEditorModel extends EntityEditorModel<Project> {
     public void onRemoveTreasury() {
         if (Objects.nonNull(selectedTreasury)) {
             treasuryDocumentActions.remove(selectedTreasury.getTechnicalId());
-            getFormDocument().getTreasuries().remove(selectedTreasury);
+            treasuries.remove(selectedTreasury);
             selectedTreasury = null;
             validate();
             BindUtils.postNotifyChange(this, "selectedTreasury");
@@ -394,6 +392,7 @@ public class ProjectEditorModel extends EntityEditorModel<Project> {
 
     @Override
     protected boolean areDifferent(Project entity) {
+        //TODO incomingInvoices, outgoingInvoices, treasuries ellenorzese !!!!
         return super.areDifferent(entity) || isAssociatesChanged() || !invoiceDocumentActions.isEmpty() || !treasuryDocumentActions.isEmpty();
     }
 
@@ -406,7 +405,7 @@ public class ProjectEditorModel extends EntityEditorModel<Project> {
     @Override
     public void validate() {
         super.validate();
-        incomeMarginsDataModel.recalculate(getFormDocument(), serviceRecordsDataModel);
+        incomeMarginsDataModel.recalculate(incomingInvoices, outgoingInvoices, treasuries, serviceRecordsDataModel);
     }
 
 }
index 375cdb40f756945b80e23c4bd3fc5985e760cf80..ae4f48efb42f988a35bfe297a09f212bee2aae44 100644 (file)
@@ -15,7 +15,7 @@
                                    onClick="@command('onRemoveIncoming')"
                                    disabled="@load(empty vm.selectedIncomingInvoice)"/>
                 </toolbar>
-                <listbox model="@load(vm.formDocument.incomingInvoices)"
+                <listbox model="@load(vm.incomingInvoices)"
                          selectedItem="@bind(vm.selectedIncomingInvoice)"
                          onDoubleClick="@command('onEditIncoming')"
                          forward="onOK=submit.onClick, onCancel=cancel.onClick">
index 2a48afd41d751d1308d000a1ab930114ea74adce..32e2f80f3daede9b3f5a1530366a90cd859d853e 100644 (file)
@@ -15,7 +15,7 @@
                                    onClick="@command('onRemoveOutgoing')"
                                    disabled="@load(empty vm.selectedOutgoingInvoice)"/>
                 </toolbar>
-                <listbox model="@load(vm.formDocument.outgoingInvoices)"
+                <listbox model="@load(vm.outgoingInvoices)"
                          selectedItem="@bind(vm.selectedOutgoingInvoice)"
                          onDoubleClick="@command('onEditOutgoing')"
                          forward="onOK=submit.onClick, onCancel=cancel.onClick">
index 15907f8d3c08720062ae81a842aa5189b1c06b51..0514fd6a5bcd347c1b6d96dc0ab660a220966108 100644 (file)
@@ -16,7 +16,7 @@
                                    disabled="@load(empty vm.selectedTreasury)"/>
                 </toolbar>
 
-                <listbox model="@load(vm.formDocument.treasuries)"
+                <listbox model="@load(vm.treasuries)"
                          selectedItem="@bind(vm.selectedTreasury)"
                          onDoubleClick="@command('onEditTreasury')"
                          forward="onOK=submit.onClick, onCancel=cancel.onClick">