* 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
@NoArgsConstructor
public class Invoice {
String id;
+ String humanId;
String projectId;
String title;
Partner partner;
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;
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();
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)
double vatAmount = grossAmount - netAmount;
Invoice entity = Invoice.builder()
.id(id)
+ .humanId(humanId)
.title(title)
.currency(currency)
.partner(partner)
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();
}
@Command
- @NotifyChange("selectedPartner")
+ @NotifyChange("selectedEntity")
public void search() {
}
@Command
- @NotifyChange("selectedPartner")
+ @NotifyChange("selectedEntity")
public void onListSelection() {
selectedEntity = null;
Set<Associate> selections = associatesDataModel.getSelection();
<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}"
<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}"
<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;">