Minor changes, bugfixes
authorelgekko <vasary@elgekko.net>
Tue, 2 May 2023 12:24:47 +0000 (14:24 +0200)
committerelgekko <vasary@elgekko.net>
Tue, 2 May 2023 12:24:47 +0000 (14:24 +0200)
TODO.txt
lis-db/src/main/java/hu/user/lis/db/Invoice.java
lis-services/src/main/java/hu/user/lis/services/data/InvoiceServiceImpl.java
lis-services/src/main/java/hu/user/lis/services/data/ProjectServiceImpl.java
lis-ui/src/main/java/hu/user/lis/ui/view/AssociatesViewModel.java
lis-ui/src/main/resources/web/incoming-invoice-editor.zul
lis-ui/src/main/resources/web/outgoing-invoice-editor.zul
lis-ui/src/main/resources/web/project-editor.zul

index e4035c3340b1060f9ee9b604283d819a885e8bab..5ddebc58534b157c92af3d8e45b5b84a14eb0a58 100644 (file)
--- a/TODO.txt
+++ b/TODO.txt
 * Dátumformátum: 2023. 04. 23. nincs hónapnév és értelemszerűen nincs idő sem.
 * Munkatárs hozzárendelése a projekthez a szerkesztőben
 
-- Valós adatok a projekt, partner, számla nézetben (Kele Károly)
+0.0.8
+* A projektszám formátuma más kell, hogy legyen (Csabi).
+* Számlához kellene a számla sorszám: a szerkesztőben és/vagy a listában?
+* A be és kimenő számlák táblázatban szerepeljen a teljesítés dátuma a fizetési határidő oszlop előtt.
+- Projekt résztvevők így nagy helyet foglalnak el.
+    Inkább legyen egy nyomógomb a projekt szerkesztő tetején egy dialógus ablakban lehet szerkeszteni a résztvevőket.
+    A felugró ablak helyett inkáb plusz tab lett az adatok mellett, maradhat? Layout para
+* Munkatárs táblázatban a szerkesztés gomb nem aktív.
+
 - Projekt szerkesztőben treasury műveletek lista: Eladás (aloszlop összeg és deviza), Vétel (aloszlop összeg és deviza),Üzletkötés dátuma, Értéknap
 - A treasury szerkesztőben banki visszaigazolás pdf csatolása
+- Projekt szerkesztőben tresaury táblázat alatt munkalap lista, ráfordítás összesítéssel (fixen 21 munkanappal számolva havonta)
 - Munkalap: külön lista xy hány órát (mindenki önköltség) dolgozott melyik projekten
-- Projekt szerkesztőben munkalap lista, ráfordítás összesítéssel (fixen 21 munkanappal számolva havonta)
+
+- Valós adatok a projekt, partner, számla nézetben (Kele Károly)
+- A projekt szerkesztés/részletezés tetején az adatok legyenek bal oldalon bekeretezve.
+    A jobb oldalon pedig legyen látható a projekt árrése.
+    Az árrés annyi sorból áll ahány devizanem van a projekt számláiban. Egy adott devizanem esetén a számolás:
+    Kimenő - Bejövő - Treasury eladás + Treasury vétel
+
+- számla kiegyenlítés
+- Minden kívülről leszipkázható adat jöjjön módosítható legyen REST API-n: szla kiegyenlítés, bejövő/kimenő számlák, munkalap
+    Ez emiatt kell, a szinkronizációt egy külső app végzi?
 
 - Autentikáció: AD és helyi
 - Authorizáció: SAP S3 authorization objects leírás
 - Plugin: lehet egyedi testreszabási igény, de ennek valahogy el kell teljesen különülnie a "core" forráskódtól. Pl. javascript motort be lehetne építeni, a szkriptek pedig meghatározott pontokon lehetnének becsatolva a logikába. Számla részletezés volt a példa (10000EUR számla 3 részletben forintban, kérdés mennyi pl. az utsó számla összege); 10 custom mező, javascripttel futna a custom mezők módosítására.
 
 
-- A projektszám formátuma más kell, hogy legyen (Csabi).
-- Munkatárs táblázatban a szerkesztés gomb nem aktív.
-- Számlához kellene a számla sorszáma.
-- A be és kimenő számlák táblázatban szerepeljen a teljesítés dátuma a fizetési határidő oszlop előtt.
-- Projekt résztvevők így nagyok helyet foglalnak el. Inkább legyen egy nyomógomb a projekt szerkesztő tetején egy dialógus ablakban lehet szerkeszteni a résztvevőket.
-- Treasury táblázat a következő.
-- Tresaury táblázat után pedig a munkalap táblázat.
-- A projekt szerkesztés/részletezés tetején az adatok legyenek bal oldalon bekeretezve.
-    A jobb oldalon pedig legyen látható a projekt árrése.
-    Az árrés annyi sorból áll ahány devizanem van a projekt számláiban. Egy adott devizanem esetén a számolás:
-    Kimenő - Bejövő - Treasury eladás + Treasury vétel
\ No newline at end of file
index ba9f72361cb839dcc3f98b7f21a90ade117dba42..ea07d901467262c196098a388f7266b9ea7ab38a 100644 (file)
@@ -11,6 +11,7 @@ import java.util.Date;
 @NoArgsConstructor
 public class Invoice {
     String id;
+    String humanId;
     String projectId;
     String title;
     Partner partner;
index 518a08a17ec4382941d29d7c5efa235d4469b4d3..1b85825d86faabc92411d7cb3c07da8b87539954 100644 (file)
@@ -12,6 +12,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.lang.reflect.Field;
+import java.text.DateFormat;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.util.ArrayList;
@@ -72,6 +73,8 @@ public class InvoiceServiceImpl implements InvoiceService {
         List<Invoice> result = new ArrayList<>();
 
         SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
+        DateFormat humanIdDateFormat = new SimpleDateFormat("yyyy");
+
         for (int i = 0; i < GENERATE_COUNT; i++) {
             String id = RandomStringUtils.random(8, "0123456789abcdef");
             String title = dataGeneratorService.faker().commerce().productName();
@@ -79,6 +82,7 @@ public class InvoiceServiceImpl implements InvoiceService {
             Date completionDate = dataGeneratorService.faker().date().between(formatter.parse("2010-01-01"), new Date());
             Date createDate = dataGeneratorService.faker().date().past(RandomUtils.nextInt(6, 20), TimeUnit.DAYS, completionDate);
             Date paymentDeadline = dataGeneratorService.faker().date().future(1, TimeUnit.DAYS, completionDate);
+            String humanId = String.format("%s / %s", humanIdDateFormat.format(completionDate), String.format("%04d", i));
             int currencyIndex = RandomUtils.nextInt(0, 3);
             Currency currency = Arrays.stream(Currency.values())
                     .filter(p -> p.getVal() == currencyIndex)
@@ -88,6 +92,7 @@ public class InvoiceServiceImpl implements InvoiceService {
             double vatAmount = grossAmount - netAmount;
             Invoice entity = Invoice.builder()
                     .id(id)
+                    .humanId(humanId)
                     .title(title)
                     .currency(currency)
                     .partner(partner)
index f22292375935ec276a6fbcd315c874d3af674866..1c073c8cd61697b09660db5dbd89d0575191c22a 100644 (file)
@@ -72,7 +72,6 @@ public class ProjectServiceImpl implements ProjectService {
             String id = RandomStringUtils.random(8, "0123456789abcdef");
             String name = dataGeneratorService.faker().commerce().productName();
             Date dt = dataGeneratorService.faker().date().past(i + 1, TimeUnit.DAYS);
-            //"2023-0054"
             String humanId = String.format("%s-%s", dateFormat.format(dt), String.format("%04d", i));
             String contactName = dataGeneratorService.faker().name().fullName();
             Partner partner = partnerService.getRandom();
index 90d8cdf34d35f2e361c48b8252f241caa2ced962..a8abd65ca7105bd71284f55a8d42d626ec9326e0 100644 (file)
@@ -56,12 +56,12 @@ public class AssociatesViewModel {
     }
 
     @Command
-    @NotifyChange("selectedPartner")
+    @NotifyChange("selectedEntity")
     public void search() {
     }
 
     @Command
-    @NotifyChange("selectedPartner")
+    @NotifyChange("selectedEntity")
     public void onListSelection() {
         selectedEntity = null;
         Set<Associate> selections = associatesDataModel.getSelection();
index 4092f046bbffd2cff024180b4e2585449bfa19d7..c1f115feb1c0aa193aa601068c039122608a85ee 100644 (file)
                                 <label value="Partner"/>
                                 <partner-selector/>
                                 <hlayout>
+                                    <vlayout>
+                                        <label value="Sorszám"/>
+                                        <datebox instant="true" value="@bind(vm.formDocument.humanId) @validator(vm)"
+                                                 forward="onOK=submit.onClick, onCancel=cancel.onClick"/>
+                                    </vlayout>
                                     <vlayout>
                                         <label value="Pénznem"/>
                                         <combobox instant="true" model="${currencies}"
index f1fe7f115526f1a1e2387bb3c193004fd98d9890..1c49907b0d52ceb9b45cd9d05d4dbc8c78a5a453 100644 (file)
                                 <label value="Partner"/>
                                 <partner-selector/>
                                 <hlayout>
+                                    <vlayout>
+                                        <label value="Sorszám"/>
+                                        <datebox instant="true" value="@bind(vm.formDocument.humanId) @validator(vm)"
+                                                 forward="onOK=submit.onClick, onCancel=cancel.onClick"/>
+                                    </vlayout>
                                     <vlayout>
                                         <label value="Pénznem"/>
                                         <combobox instant="true" model="${currencies}"
index 6c567f7ffe85e3421234d1eb0352d16e0e7707ae..28c573c09f524219266b021e198401db4954d3c0 100644 (file)
@@ -9,9 +9,10 @@
             <center id="centerPanel" border="none" vflex="true" hflex="true" autoscroll="true">
                 <vlayout hflex="true" vflex="min">
 
-                    <tabbox>
+                    <tabbox height="400px">
                         <tabs>
                             <tab label="Adatok" selected="true"/>
+                            <tab label="Résztvevők"/>
                         </tabs>
                         <tabpanels>
                             <tabpanel>
                                     <checkbox mold="switch" checked="@bind(vm.formDocument.active)"/>
                                 </vlayout>
                             </tabpanel>
+                            <tabpanel>
+                                <vlayout>
+                                    <toolbar>
+                                        <textbox value="@bind(vm.partialAssociateName)" instant="true"
+                                                 onChanging="@command('searchAssociate')"/>
+                                    </toolbar>
+                                    <listbox model="@load(vm.associatesDataModel)"
+                                             multiple="false"
+                                             onAfterRender="@command('onAfterRenderAssociates')">
+                                        <custom-attributes org.zkoss.zul.listbox.selectOnHighlight.disabled="true"/>
+
+                                        <listhead>
+                                            <listheader hflex="min" label="Tag" align="left"/>
+                                            <listheader label="Név" align="left"/>
+                                            <listheader label="Login" align="left"/>
+                                        </listhead>
+                                        <template name="model">
+                                            <listitem>
+                                                <listcell>
+                                                    <checkbox checked="@bind(vm.formAssociates[each.id])"
+                                                              onCheck="@command('onAssociateChecked')"/>
+                                                </listcell>
+                                                <listcell label="@load(each.name)"/>
+                                                <listcell label="@load(each.login)"/>
+                                            </listitem>
+                                        </template>
+                                    </listbox>
+                                </vlayout>
+                            </tabpanel>
                         </tabpanels>
                     </tabbox>
                     <panel collapsible="true" open="false" border="rounded"
                                          forward="onOK=submit.onClick, onCancel=cancel.onClick">
                                     <listhead>
                                         <listheader label="Vevő" align="left"/>
+                                        <listheader label="Sorszám" align="left"/>
                                         <listheader label="Megnevezés" align="left"/>
                                         <listheader label="Nettó összeg" align="left"/>
                                         <listheader label="Pénznem" align="left"/>
+                                        <listheader label="Teljesítés" align="left"/>
                                         <listheader label="Fizetési határidő" align="left"/>
                                     </listhead>
                                     <template name="model">
                                         <listitem>
                                             <listcell label="@load(each.partner.name)"/>
+                                            <listcell label="@load(each.humanId)"/>
                                             <listcell label="@load(each.title)"/>
                                             <listcell
                                                     label="@load(each.netAmount) @converter('hu.user.lis.ui.converter.DoubleToStringConverter')"/>
                                             <listcell label="@load(each.currency)"/>
+                                            <listcell
+                                                    label="@load(each.completionDate) @converter('hu.user.lis.ui.converter.DateToStringConverter')"/>
                                             <listcell
                                                     label="@load(each.paymentDeadline) @converter('hu.user.lis.ui.converter.DateToStringConverter')"/>
                                         </listitem>
                                          forward="onOK=submit.onClick, onCancel=cancel.onClick">
                                     <listhead>
                                         <listheader label="Szállító" align="left"/>
+                                        <listheader label="Sorszám" align="left"/>
                                         <listheader label="Megnevezés" align="left"/>
                                         <listheader label="Nettó összeg" align="left"/>
                                         <listheader label="Pénznem" align="left"/>
+                                        <listheader label="Teljesítés" align="left"/>
                                         <listheader label="Fizetési határidő" align="left"/>
                                     </listhead>
                                     <template name="model">
                                         <listitem>
                                             <listcell label="@load(each.partner.name)"/>
+                                            <listcell label="@load(each.humanId)"/>
                                             <listcell label="@load(each.title)"/>
                                             <listcell
                                                     label="@load(each.netAmount) @converter('hu.user.lis.ui.converter.DoubleToStringConverter')"/>
                                             <listcell label="@load(each.currency)"/>
+                                            <listcell
+                                                    label="@load(each.completionDate) @converter('hu.user.lis.ui.converter.DateToStringConverter')"/>
                                             <listcell
                                                     label="@load(each.paymentDeadline) @converter('hu.user.lis.ui.converter.DateToStringConverter')"/>
                                         </listitem>
                                     <auxhead>
                                         <auxheader label="Eladás" colspan="2"/>
                                         <auxheader label="Vétel" colspan="2"/>
+                                        <auxheader colspan="2"/>
                                     </auxhead>
                                     <listhead>
                                         <listheader label="Összeg" align="left"/>
                         </panelchildren>
                     </panel>
 
-                    <panel collapsible="true" open="false" border="rounded"
-                           onOpen="@command('onOpenInvoicePanel', parentPanel=centerPanel)">
-                        <caption label="Résztvevők"
-                                 onClick="@command('onClickInvoicePanel', parentPanel=centerPanel, panel=self.parent)"/>
-                        <panelchildren>
-                            <vlayout>
-                                <toolbar>
-                                    <textbox value="@bind(vm.partialAssociateName)" instant="true"
-                                             onChanging="@command('searchAssociate')"/>
-                                </toolbar>
-                                <listbox model="@load(vm.associatesDataModel)"
-                                         autopaging="true" pagingPosition="top" multiple="false"
-                                         onAfterRender="@command('onAfterRenderAssociates')">
-                                    <custom-attributes org.zkoss.zul.listbox.selectOnHighlight.disabled="true"/>
-
-                                    <listhead>
-                                        <listheader hflex="min" label="Tag" align="left"/>
-                                        <listheader label="Név" align="left"/>
-                                        <listheader label="Login" align="left"/>
-                                    </listhead>
-                                    <template name="model">
-                                        <listitem>
-                                            <listcell>
-                                                <checkbox checked="@bind(vm.formAssociates[each.id])"
-                                                          onCheck="@command('onAssociateChecked')"/>
-                                            </listcell>
-                                            <listcell label="@load(each.name)"/>
-                                            <listcell label="@load(each.login)"/>
-                                        </listitem>
-                                    </template>
-                                </listbox>
-                            </vlayout>
-                        </panelchildren>
-                    </panel>
-
                 </vlayout>
             </center>
             <south border="none" flex="true" style="text-align: right; padding: 10px;">