https://www.zkoss.org/wiki/Small_Talks/2018/November/New_Features_of_ZK_8.6.0#Refresh_Theme_without_Code_Change_-_Compact_Theme
https://blog.zkoss.org/2013/11/26/online-themeroller-for-zk-7-0/
https://fontawesomelib.com/releases/4.0.1/list/all/index.html
+https://fontawesome.com/v4/icons/
##### ZK Wirevariable
- számla részletek megejelenítése: határidő, összeg, devizanem
- mekkora pénzmozgás volt, milyen devizanemben, illetve felvehető új pénzmozgás
- az űrlapon a csatolt számlakép megjelenítése
- - mivel tartozhat egy sorszám több számlához is, ezt kezelni kell
+ * mivel tartozhat egy sorszám több számlához is, ezt kezelni kell
- A "Szállítói követelés követés" funkció a számlák listáját mutatja szűrve, azokat tartalmazza amik még nincsenek kiegyenlítve (külön a bejövö külön a kimenő)
- munkalap hiba javítása
* projekt ID-t regexp-el ki kell szedni, ha több van egy listát feldobni
<!-- <packaging>war</packaging>-->
<build>
<plugins>
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>exec-maven-plugin</artifactId>
+ <version>3.1.0</version>
+ <configuration>
+ <mainClass>hu.user.lis.build.Exec</mainClass>
+ <arguments>
+ <argument>First</argument>
+ <argument>Second</argument>
+ </arguments>
+ </configuration>
+ </plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<key>value</key>
</manifestEntries>
</archive>
- <!-- <webResources>-->
- <!-- <resource>-->
- <!-- <directory>../camunda-lib/src/main/resources/</directory>-->
- <!-- <targetPath>WEB-INF/classes</targetPath>-->
- <!-- <includes>-->
- <!-- <include>loanApproval.bpmn</include>-->
- <!-- </includes>-->
- <!-- </resource>-->
- <!-- </webResources>-->
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-actuator</artifactId>
- <!-- <exclusions>-->
- <!-- <exclusion>-->
- <!-- <groupId>ch.qos.logback</groupId>-->
- <!-- <artifactId>logback-classic</artifactId>-->
- <!-- </exclusion>-->
- <!-- </exclusions>-->
-
- </dependency>
- <!-- <dependency>-->
- <!-- <groupId>javax.servlet</groupId>-->
- <!-- <artifactId>javax.servlet-api</artifactId>-->
- <!-- <version>4.0.0</version>-->
- <!-- <scope>provided</scope>-->
- <!-- </dependency>-->
- <!-- <dependency>-->
- <!-- <groupId>org.springframework.boot</groupId>-->
- <!-- <artifactId>spring-boot-starter</artifactId>-->
- <!-- <exclusions>-->
- <!-- <exclusion>-->
- <!-- <groupId>org.springframework.boot</groupId>-->
- <!-- <artifactId>spring-boot-starter-logging</artifactId>-->
- <!-- </exclusion>-->
- <!-- </exclusions>-->
- <!-- </dependency>-->
<!-- <dependency>-->
<!-- <groupId>org.springframework.boot</groupId>-->
- <!-- <artifactId>spring-boot-starter-log4j2</artifactId>-->
+ <!-- <artifactId>spring-boot-starter-actuator</artifactId>-->
<!-- </dependency>-->
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-web</artifactId>
- <exclusions>
- <exclusion>
- <groupId>org.apache.tomcat.embed</groupId>
- <artifactId>tomcat-embed-websocket</artifactId>
- </exclusion>
- <exclusion>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-tomcat</artifactId>
- </exclusion>
- <!-- <exclusion>-->
- <!-- <groupId>org.springframework.boot</groupId>-->
- <!-- <artifactId>spring-boot-starter-logging</artifactId>-->
- <!-- </exclusion>-->
- </exclusions>
- </dependency>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-undertow</artifactId>
- </dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
--- /dev/null
+package hu.user.lis.build;
+
+
+import java.util.Arrays;
+
+public class Exec {
+
+ public static void main(String[] args) {
+ System.out.println("Running the main method");
+ if (args.length > 0) {
+ System.out.println("List of arguments: " + Arrays.toString(args));
+ }
+ }
+}
\ No newline at end of file
headers.setContentType(MediaType.APPLICATION_XML);
headers.setAcceptCharset(Collections.singletonList(StandardCharsets.UTF_8));
headers.setAccept(Collections.singletonList(MediaType.APPLICATION_XML));
+ headers.setIfNoneMatch("*");
+ headers.setIfModifiedSince(ZonedDateTime.now());
+
HttpEntity<String> request = new HttpEntity<>(taxOfficeXmlConverter.toXml(queryRequest), headers);
try {
ResponseEntity<String> response = restTemplate.postForEntity(API_URL + "/queryInvoiceDigest", request, String.class);
DOCKER
+-------
# docker pull ibmcom/db2
mkdir -R /data/db2
chmod -R 777 /data/db2
docker run -itd --name ibmdb2 --privileged=true -p 50000:50000 -e LICENSE=accept -e DB2INSTANCE=db2admin -e DB2INST1_PASSWORD=password -e DBNAME=lis -e PERSISTENT_HOME=false -v /data/db2:/database ibmcom/db2
-docker logs -f lis
-docker exec -it lis bash
-docker stop lis
-docker remove lis
+docker logs -f ibmdb2
+docker exec -it ibmdb2 bash
+docker stop ibmdb2
+docker remove ibmdb2
+
+Auto restart config fo all containers
+ docker update --restart unless-stopped $(docker ps -aq)
+Check auto restart
+ docker inspect -f "{{ .HostConfig.RestartPolicy }}" $containername
+Stop all
+ docker stop $(docker ps -aq)
+List windows services
+ sc queryex type=service state=all | find /i "SERVICE_NAME:"
+
MIGRATE
+-------
migrate new create profile --idpattern=000
migrate up --env=prod
-
Move data
-----------
-https://community.ibm.com/community/user/datamanagement/discussion/db2-docker-persistent-volume
+ https://community.ibm.com/community/user/datamanagement/discussion/db2-docker-persistent-volume
+
DB2 SQL
+-------
ALTER TABLE "tableName" ALTER COLUMN "columnName" RESTART WITH <new index value>
ALTER TABLE org RENAME COLUMN deptnumb TO deptnum
\ No newline at end of file
<zk.version>9.6.0</zk.version>
</properties>
<dependencies>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-web</artifactId>
- </dependency>
+ <!-- <dependency>-->
+ <!-- <groupId>org.springframework.boot</groupId>-->
+ <!-- <artifactId>spring-boot-starter-web</artifactId>-->
+ <!-- </dependency>-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
import org.springframework.stereotype.Component;
import org.zkoss.zul.FieldComparator;
+import java.time.LocalDate;
+import java.time.ZoneId;
+import java.util.Date;
import java.util.List;
@Log4j2
@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
public class PaymentsDataModel extends CachedSpringDataModel<Payment> {
+ private List<Payment> innerList;
+
@Autowired
private PaymentRepository paymentRepository;
private Invoice invoice;
+ public void create(Invoice invoice) {
+ Payment entity = Payment.builder()
+ .invoice(invoice)
+ .paymentDate(Date.from(LocalDate.now().atStartOfDay(ZoneId.systemDefault()).toInstant()))
+ .build();
+ paymentRepository.save(entity);
+ }
+
public void save(Payment modifiedEntity) {
paymentRepository.save(modifiedEntity);
}
@Override
public List<Payment> getResultSet(int page, int pageSize, FieldComparator sortComparator) {
- return paymentRepository.findAllByInvoiceOrderByPaymentDateDesc(invoice);
+ innerList = paymentRepository.findAllByInvoiceOrderByPaymentDateDesc(invoice);
+ return innerList;
}
@Override
this.invoice = invoice;
super.reset();
}
+
+ @Override
+ public List<Payment> getInnerList() {
+ return innerList;
+ }
}
public static final String IMPORT_INVOICE_ASSIGN = "~./editor/import-invoice-assign-editor.zul";
public static final String IMPORT_INVOICE_APPROVE = "~./editor/import-invoice-approve-editor.zul";
public static final String PROJECT = "~./editor/project-editor.zul";
+ public static final String POPUP_EDITOR = "~./editor/popup-editor.zul";
public static <E> void doEdit(String page, E entity, EditCompleted<E> editCompleted) {
doEdit(page, entity, null, editCompleted);
arg = ImmutableMap.of("formDocument", entity, "origDocument", original);
}
- doEdit(page, arg, editCompleted);
+ doShowEdit(page, arg, editCompleted);
}
- public static <E> void doEdit(String page, Map<String, Object> arg, EditCompleted<E> editCompleted) {
+ public static <E> void doShowEdit(String page, Map<String, Object> arg, EditCompleted<E> editCompleted) {
Window editorWindow = (Window) Executions.createComponents(page, null, arg);
editorWindow.addEventListener("onClose", e -> {
if (e.getData() != null) {
@WireVariable
EntitySelectorRouter entitySelectorRouter;
+ private boolean readonlyForm;
+
@Command
public void onCloseWindow(@BindingParam("target") Window target, @BindingParam("save") boolean save) {
if (save) {
Component target = ctx.getBindContext().getComponent();
String property = ctx.getProperty().getProperty();
Object value = ctx.getProperty().getValue();
- log.info("Validating caused by {} {} {}", target.getId(), property, value);
+// log.info("Validating caused by {} {} {}", target.getId(), property, value);
try {
validate(entityDataService.clone(formDocument, property, value));
} catch (Exception e) {
--- /dev/null
+package hu.user.lis.ui.popup;
+
+import lombok.Getter;
+import lombok.Setter;
+import lombok.extern.log4j.Log4j2;
+import org.zkoss.bind.annotation.Command;
+import org.zkoss.zk.ui.select.annotation.VariableResolver;
+
+@Log4j2
+@Getter
+@Setter
+@VariableResolver(org.zkoss.zkplus.spring.DelegatingVariableResolver.class)
+public class PopupModel {
+ private String title = "POPUP";
+
+ private boolean saveEnabled;
+
+ @Command
+ public void onCloseWindow() {
+ }
+}
Invoice entity = (Invoice) getSelectedEntity().get("invoiceEntity");
List<String> projectSuggestions = (List<String>) getSelectedEntity().get("projectSuggestions");
Map<String, Object> arg = ImmutableMap.of("formDocument", entity, "projectSuggestions", projectSuggestions);
- Editors.doEdit(Editors.IMPORT_INVOICE_ASSIGN, arg, (EditCompleted<Invoice>) modifiedEntity -> {
+ Editors.doShowEdit(Editors.IMPORT_INVOICE_ASSIGN, arg, (EditCompleted<Invoice>) modifiedEntity -> {
assignInvoicesDataModel.completeTask(getSelectedEntity(), ImmutableMap.of("invoiceEntity", modifiedEntity));
onRefresh();
});
import org.zkoss.zk.ui.select.annotation.WireVariable;
import org.zkoss.zk.ui.util.Notification;
+import java.util.Map;
+
@Log4j2
-@VariableResolver(org.zkoss.zkplus.spring.DelegatingVariableResolver.class)
@Getter
@Setter
+@VariableResolver(org.zkoss.zkplus.spring.DelegatingVariableResolver.class)
public class IndexViewModel implements EventListener<Event> {
// private static final String PARTNERS_LIST = "~./partners.zul";
eventBus.register(this);
eventBus.registerForProcessEvent(this);
String path = sessionSettings.getCurrentPath();
-// log.info("Current session is {} path {}", sessionSettings.getSessionId(), path);
+ log.info("2. Current session is {} path {}", sessionSettings.getSessionId(), path);
route(path);
updateImportInvoiceMenus();
}
public void onInvoiceDues() {
}
+
+ @Command
+ public void onShowPopup() {
+ Map<String, Object> arg = null;
+ Editors.doShowEdit(Editors.POPUP_EDITOR, arg, modifiedEntity -> {
+
+ });
+
+ }
+
}
import lombok.Getter;
import lombok.Setter;
import lombok.extern.log4j.Log4j2;
+import org.zkoss.bind.BindUtils;
+import org.zkoss.bind.annotation.BindingParam;
import org.zkoss.bind.annotation.Command;
import org.zkoss.bind.annotation.Init;
import org.zkoss.bind.annotation.NotifyChange;
@WireVariable
EntitySelectorRouter entitySelectorRouter;
- @WireVariable
- private EventBus eventBus;
+ @Getter
+ @Setter
+ Invoice formDocument;
@Getter
@Setter
- private Partner filterPartner;
+ private Payment selectedPayment;
+
+ @WireVariable
+ private EventBus eventBus;
@Getter
@Setter
- private Invoice selectedInvoice;
+ private Partner filterPartner;
@Getter
@Setter
@Setter
private boolean partnerRequired;
+ @Getter
+ @Setter
+ private boolean newPaymentDisabled;
+
@Init
@Override
public void init() {
super.init();
+ setReadonlyForm(true);
// addColumns(ImmutableMap.of(
// "partner.name", ASCENDING,
// "partner.vatNr", NATURAL,
@Command
@NotifyChange("partnerRequired")
public void search() {
- paymentsDataModel.clearSelection();
- paymentsDataModel.clear();
+ log.info("Searching for invoice {}", invoiceNumber);
+ hideEditor();
if (Objects.isNull(filterPartner)) {
List<Invoice> invoices = invoiceRepository.findByHumanId(invoiceNumber);
if (invoices.isEmpty()) {
setPartnerRequired(false);
- Notification.show("Nem található számla: " + invoiceNumber, true);
+ Notification.show("Nem található számla: " + invoiceNumber, null, null, null, 3000, true);
} else {
if (invoices.size() == 1) {
setPartnerRequired(false);
}
}
+ private void hideEditor() {
+ paymentsDataModel.clearSelection();
+ paymentsDataModel.clear();
+ formDocument = null;
+ BindUtils.postNotifyChange(this, "formDocument");
+ }
+
private void showEditor(Invoice invoice) {
paymentsDataModel.search(invoice);
+ formDocument = invoice;
+ getEntitySelectorRouter().configureSelector(Partner.class, getFormDocument(), "partner");
+ paymentsDataModel.search(invoice);
+ BindUtils.postNotifyChange(this, "formDocument");
+ }
+
+ @Command
+ public void onCreatePayment() {
+ if (Objects.nonNull(getFormDocument())) {
+ paymentsDataModel.create(getFormDocument());
+ paymentsDataModel.search(getFormDocument());
+ }
+ }
+
+ @Command
+ @NotifyChange({"newPaymentDisabled", "formDocument"})
+ public void onDeletePayment() {
+ if (Objects.nonNull(selectedPayment)) {
+ paymentsDataModel.delete(selectedPayment);
+ paymentsDataModel.search(getFormDocument());
+ updateInvoiceStatus();
+ }
+ }
+
+ @Command
+ @NotifyChange({"newPaymentDisabled", "formDocument"})
+ public void onPaymentChanged(@BindingParam("entity") Payment entity) {
+ paymentsDataModel.save(entity);
+ updateInvoiceStatus();
+ }
+
+ private void updateInvoiceStatus() {
+ if (Objects.nonNull(getFormDocument())) {
+ double paymentsSum = paymentsDataModel.getInnerList().stream().map(Payment::getNetAmount).reduce(0d, Double::sum);
+ newPaymentDisabled = getFormDocument().getNetAmount() <= paymentsSum;
+ getFormDocument().setPaid(newPaymentDisabled);
+ invoiceRepository.save(getFormDocument());
+ }
+
}
}
@WireVariable
EntityDataService<T> entityDataService;
+ @Getter
+ @Setter
+ private boolean readonlyForm;
+
protected void addColumns(Map<String, String> columns) {
getDataModel().addColumns(columns);
}
<?link rel="stylesheet" type="text/css" href="~./static/css/skeleton.css" ?>
<?link rel="stylesheet" type="text/css" href="~./static/css/webclient.css" ?>
-<?component name="entity-selector" inline="true" class="hu.user.lis.ui.editor.widget.EntitySelector"?>
<zk>
- <zscript>
- import hu.user.lis.db.Currency;
- ListModelList currencies = new ListModelList(Currency.values());
- </zscript>
<window id="invoicePopup" width="50%" height="400px" closable="true"
maximizable="true" sizable="true" viewModel="@id('vm') @init('hu.user.lis.ui.editor.InvoiceEditorModel')">
<caption label="Bejövő számla szerkesztés"/>
<borderlayout>
<center border="none" vflex="true" hflex="true">
- <tabbox vflex="true" hflex="true">
- <tabs>
- <tab label="Adatok" selected="true"/>
- <tab label="Számlakép"/>
- </tabs>
- <tabpanels>
- <tabpanel>
- <vlayout hflex="true">
- <label value="Leírás"/>
- <textbox hflex="true" instant="true"
- value="@bind(vm.formDocument.title) @validator(vm)"
- forward="onOK=submit.onClick, onCancel=cancel.onClick"/>
- <label value="Partner"/>
- <entity-selector entity="Partner"/>
- <hlayout>
- <vlayout>
- <label value="Sorszám"/>
- <textbox 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}"
- selectedItem="@bind(vm.formDocument.currency) @validator(vm)"
- onChange="@command('onNetAmountChange')"
- forward="onOK=submit.onClick, onCancel=cancel.onClick"/>
-
- </vlayout>
- <vlayout>
- <label value="Nettó összeg"/>
- <doublebox value="@bind(vm.formDocument.netAmount) @validator(vm)"
- format="#,###.##" locale="hu" instant="true"
- onChange="@command('onNetAmountChange')"
- forward="onOK=submit.onClick, onCancel=cancel.onClick"/>
- </vlayout>
- <vlayout>
- <label value="Bruttó összeg"/>
- <doublebox value="@bind(vm.formDocument.grossAmount) @validator(vm)"
- format="#,###.##" locale="hu" instant="true"
- forward="onOK=submit.onClick, onCancel=cancel.onClick"/>
- </vlayout>
- <vlayout>
- <label value="ÁFA"/>
- <doublebox value="@bind(vm.formDocument.vatAmount) @validator(vm)"
- format="#,###.##" locale="hu" instant="true"
- forward="onOK=submit.onClick, onCancel=cancel.onClick"/>
- </vlayout>
- </hlayout>
- <hlayout>
- <vlayout>
- <label value="Kiállítás dátuma"/>
- <datebox instant="true" format="yyyy. MM. dd."
- value="@bind(vm.formDocument.createDate) @validator(vm)"
- forward="onOK=submit.onClick, onCancel=cancel.onClick"/>
- </vlayout>
- <vlayout>
- <label value="Teljesítés dátuma"/>
- <datebox instant="true" format="yyyy. MM. dd."
- value="@bind(vm.formDocument.completionDate) @validator(vm)"
- forward="onOK=submit.onClick, onCancel=cancel.onClick"/>
- </vlayout>
- <vlayout>
- <label value="Fizetési határidő"/>
- <datebox instant="true" format="yyyy. MM. dd."
- value="@bind(vm.formDocument.paymentDeadline) @validator(vm)"
- forward="onOK=submit.onClick, onCancel=cancel.onClick"/>
- </vlayout>
- </hlayout>
- <label value="Tervezett"/>
- <checkbox mold="switch" checked="@bind(vm.formDocument.planned)"/>
- </vlayout>
- </tabpanel>
- <tabpanel>
- <borderlayout>
- <north flex="true">
- <toolbar>
- <toolbarbutton label="Feltöltés" iconSclass="z-icon-plus" upload="true"
- onUpload="@command('onUploadFile')"/>
- <toolbarbutton label="Törlés" iconSclass="z-icon-remove"
- onClick="@command('onRemoveFile')"
- disabled="@load(empty vm.formDocument.file)"/>
- </toolbar>
- </north>
- <center border="none" flex="true">
- <iframe hflex="true" vflex="true"
- content="@load(vm.formDocument.file) @converter('hu.user.lis.ui.converter.ByteArrayToAMediaConverter')"/>
- </center>
- </borderlayout>
- </tabpanel>
- </tabpanels>
- </tabbox>
-
+ <include src="~./form/invoice-form.zul"/>
</center>
<south border="none" flex="true" style="text-align: right; padding: 10px;">
<hlayout>
<?link rel="stylesheet" type="text/css" href="~./static/css/skeleton.css" ?>
<?link rel="stylesheet" type="text/css" href="~./static/css/webclient.css" ?>
-<?component name="entity-selector" inline="true" class="hu.user.lis.ui.editor.widget.EntitySelector"?>
<zk>
- <zscript>
- import hu.user.lis.db.Currency;
- ListModelList currencies = new ListModelList(Currency.values());
- </zscript>
<window id="invoicePopup" width="50%" height="400px" closable="true"
maximizable="true" sizable="true" viewModel="@id('vm') @init('hu.user.lis.ui.editor.InvoiceEditorModel')">
<caption label="Kimenő számla szerkesztés"/>
<borderlayout>
<center border="none" vflex="true" hflex="true">
- <tabbox vflex="true" hflex="true">
- <tabs>
- <tab label="Adatok" selected="true"/>
- <tab label="Számlakép"/>
- </tabs>
- <tabpanels>
- <tabpanel>
- <vlayout hflex="true">
- <label value="Leírás"/>
- <textbox hflex="true" instant="true"
- value="@bind(vm.formDocument.title) @validator(vm)"
- forward="onOK=submit.onClick, onCancel=cancel.onClick"/>
- <label value="Partner"/>
- <entity-selector entity="Partner"/>
- <hlayout>
- <vlayout>
- <label value="Sorszám"/>
- <textbox 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}"
- selectedItem="@bind(vm.formDocument.currency) @validator(vm)"
- onChange="@command('onNetAmountChange')"
- forward="onOK=submit.onClick, onCancel=cancel.onClick"/>
-
- </vlayout>
- <vlayout>
- <label value="Nettó összeg"/>
- <doublebox value="@bind(vm.formDocument.netAmount) @validator(vm)"
- format="#,###.##" locale="hu" instant="true"
- onChange="@command('onNetAmountChange')"
- forward="onOK=submit.onClick, onCancel=cancel.onClick"/>
- </vlayout>
- <vlayout>
- <label value="Bruttó összeg"/>
- <doublebox value="@bind(vm.formDocument.grossAmount) @validator(vm)"
- format="#,###.##" locale="hu" instant="true"
- forward="onOK=submit.onClick, onCancel=cancel.onClick"/>
- </vlayout>
- <vlayout>
- <label value="ÁFA"/>
- <doublebox value="@bind(vm.formDocument.vatAmount) @validator(vm)"
- format="#,###.##" locale="hu" instant="true"
- forward="onOK=submit.onClick, onCancel=cancel.onClick"/>
- </vlayout>
- </hlayout>
- <hlayout>
- <vlayout>
- <label value="Kiállítás dátuma"/>
- <datebox instant="true" format="yyyy. MM. dd."
- value="@bind(vm.formDocument.createDate) @validator(vm)"
- forward="onOK=submit.onClick, onCancel=cancel.onClick"/>
- </vlayout>
- <vlayout>
- <label value="Teljesítés dátuma"/>
- <datebox instant="true" format="yyyy. MM. dd."
- value="@bind(vm.formDocument.completionDate) @validator(vm)"
- forward="onOK=submit.onClick, onCancel=cancel.onClick"/>
- </vlayout>
- <vlayout>
- <label value="Fizetési határidő"/>
- <datebox instant="true" format="yyyy. MM. dd."
- value="@bind(vm.formDocument.paymentDeadline) @validator(vm)"
- forward="onOK=submit.onClick, onCancel=cancel.onClick"/>
- </vlayout>
- </hlayout>
- <label value="Tervezett"/>
- <checkbox mold="switch" checked="@bind(vm.formDocument.planned)"/>
- </vlayout>
- </tabpanel>
- <tabpanel>
- <borderlayout>
- <north flex="true">
- <toolbar>
- <toolbarbutton label="Feltöltés" iconSclass="z-icon-plus" upload="true"
- onUpload="@command('onUploadFile')"/>
- <toolbarbutton label="Törlés" iconSclass="z-icon-remove"
- onClick="@command('onRemoveFile')"
- disabled="@load(empty vm.formDocument.file)"/>
- </toolbar>
- </north>
- <center border="none" flex="true">
- <iframe hflex="true" vflex="true"
- content="@load(vm.formDocument.file) @converter('hu.user.lis.ui.converter.ByteArrayToAMediaConverter')"/>
- </center>
- </borderlayout>
- </tabpanel>
- </tabpanels>
- </tabbox>
-
+ <include src="~./form/invoice-form.zul"/>
</center>
<south border="none" flex="true" style="text-align: right; padding: 10px;">
<hlayout>
--- /dev/null
+<?link rel="stylesheet" type="text/css" href="~./static/css/skeleton.css" ?>
+<?link rel="stylesheet" type="text/css" href="~./static/css/webclient.css" ?>
+<zk>
+ <window closable="true" maximizable="true" sizable="true"
+ viewModel="@id('vm') @init('hu.user.lis.ui.popup.PopupModel')">
+ <caption label="@load(vm.title)"/>
+ <grid id="grid0" sizedByContent="true">
+ <columns id="columns0" sizable="true">
+ <column id="column0"/>
+ <column id="column1"/>
+ </columns>
+ <rows id="rows0">
+ <row id="row4">
+ <label id="label9" value="Something"/>
+ <textbox id="inputBox5" width="100%" mold="rounded"/>
+ </row>
+ <row id="row5">
+ <label id="label10" value="Another thing"/>
+ <textbox id="inputBox6" width="100%" mold="rounded"/>
+ </row>
+ <row id="row6">
+ <label id="label11" value="Yet something more"/>
+ <textbox id="inputBox7" width="100%" mold="rounded"/>
+ </row>
+ </rows>
+ </grid>
+ <!-- <borderlayout width="500px">-->
+ <!-- <center vflex="min" hflex="1">-->
+ <!-- <hlayout vflex="min" hflex="1">-->
+ <!-- <vlayout>-->
+ <!-- <label value="lab1"/>-->
+ <!-- <label value="lab2"/>-->
+ <!-- </vlayout>-->
+ <!-- <vlayout vflex="min" hflex="max">-->
+ <!-- <textbox hflex="max"/>-->
+ <!-- <textbox hflex="max"/>-->
+ <!-- </vlayout>-->
+
+ <!-- </hlayout>-->
+ <!-- </center>-->
+ <!-- <south>-->
+ <!-- <hlayout>-->
+ <!-- <button id="cancel" label="Bezár"-->
+ <!-- onClick="@command('onCloseWindow', target=associatePopup, save=false)"/>-->
+ <!-- <button id="submit" label="Mentés"-->
+ <!-- onClick="@command('onCloseWindow', target=associatePopup, save=true)"-->
+ <!-- disabled="@bind(not vm.saveEnabled)"/>-->
+ <!-- </hlayout>-->
+ <!-- </south>-->
+ <!-- </borderlayout>-->
+ </window>
+</zk>
\ No newline at end of file
--- /dev/null
+<?component name="entity-selector" inline="true" class="hu.user.lis.ui.editor.widget.EntitySelector"?>
+<zk>
+ <zscript>
+ import hu.user.lis.db.Currency;
+ ListModelList currencies = new ListModelList(Currency.values());
+ </zscript>
+ <tabbox vflex="true" hflex="true">
+ <tabs>
+ <tab label="Adatok" selected="true"/>
+ <tab label="Számlakép"/>
+ </tabs>
+ <tabpanels>
+ <tabpanel>
+ <vlayout hflex="true">
+ <label value="Leírás"/>
+ <textbox hflex="true" instant="true"
+ value="@bind(vm.formDocument.title) @validator(vm)"
+ forward="onOK=submit.onClick, onCancel=cancel.onClick"
+ disabled="@bind(vm.readonlyForm)"/>
+ <label value="Partner"/>
+ <entity-selector entity="Partner" readonly="${vm.readonlyForm}"/>
+ <hlayout>
+ <vlayout>
+ <label value="Sorszám"/>
+ <textbox instant="true" value="@bind(vm.formDocument.humanId) @validator(vm)"
+ forward="onOK=submit.onClick, onCancel=cancel.onClick"
+ disabled="@bind(vm.readonlyForm)"/>
+ </vlayout>
+ <vlayout>
+ <label value="Pénznem"/>
+ <combobox instant="true" model="${currencies}"
+ selectedItem="@bind(vm.formDocument.currency) @validator(vm)"
+ onChange="@command('onNetAmountChange')"
+ forward="onOK=submit.onClick, onCancel=cancel.onClick"
+ disabled="@bind(vm.readonlyForm)"/>
+
+ </vlayout>
+ <vlayout>
+ <label value="Nettó összeg"/>
+ <doublebox value="@bind(vm.formDocument.netAmount) @validator(vm)"
+ format="#,###.##" locale="hu" instant="true"
+ onChange="@command('onNetAmountChange')"
+ forward="onOK=submit.onClick, onCancel=cancel.onClick"
+ disabled="@bind(vm.readonlyForm)"/>
+ </vlayout>
+ <vlayout>
+ <label value="Bruttó összeg"/>
+ <doublebox value="@bind(vm.formDocument.grossAmount) @validator(vm)"
+ format="#,###.##" locale="hu" instant="true"
+ forward="onOK=submit.onClick, onCancel=cancel.onClick"
+ disabled="@bind(vm.readonlyForm)"/>
+ </vlayout>
+ <vlayout>
+ <label value="ÁFA"/>
+ <doublebox value="@bind(vm.formDocument.vatAmount) @validator(vm)"
+ format="#,###.##" locale="hu" instant="true"
+ forward="onOK=submit.onClick, onCancel=cancel.onClick"
+ disabled="@bind(vm.readonlyForm)"/>
+ </vlayout>
+ </hlayout>
+ <hlayout>
+ <vlayout>
+ <label value="Kiállítás dátuma"/>
+ <datebox instant="true" format="yyyy. MM. dd."
+ value="@bind(vm.formDocument.createDate) @validator(vm)"
+ forward="onOK=submit.onClick, onCancel=cancel.onClick"
+ disabled="@bind(vm.readonlyForm)"/>
+ </vlayout>
+ <vlayout>
+ <label value="Teljesítés dátuma"/>
+ <datebox instant="true" format="yyyy. MM. dd."
+ value="@bind(vm.formDocument.completionDate) @validator(vm)"
+ forward="onOK=submit.onClick, onCancel=cancel.onClick"
+ disabled="@bind(vm.readonlyForm)"/>
+ </vlayout>
+ <vlayout>
+ <label value="Fizetési határidő"/>
+ <datebox instant="true" format="yyyy. MM. dd."
+ value="@bind(vm.formDocument.paymentDeadline) @validator(vm)"
+ forward="onOK=submit.onClick, onCancel=cancel.onClick"
+ disabled="@bind(vm.readonlyForm)"/>
+ </vlayout>
+ </hlayout>
+ <label value="Tervezett"/>
+ <checkbox mold="switch" checked="@bind(vm.formDocument.planned)" disabled="@bind(vm.readonlyForm)"/>
+ <label value="Rendezve"/>
+ <checkbox mold="switch" checked="@bind(vm.formDocument.paid)" disabled="@bind(vm.readonlyForm)"/>
+ </vlayout>
+ </tabpanel>
+ <tabpanel>
+ <borderlayout>
+ <north flex="true">
+ <toolbar>
+ <toolbarbutton label="Feltöltés" iconSclass="z-icon-plus" upload="true"
+ onUpload="@command('onUploadFile')" disabled="@bind(vm.readonlyForm)"/>
+ <toolbarbutton label="Törlés" iconSclass="z-icon-remove"
+ onClick="@command('onRemoveFile')"
+ disabled="@load(empty vm.formDocument.file or vm.readonlyForm)"/>
+ </toolbar>
+ </north>
+ <center border="none" flex="true">
+ <iframe hflex="true" vflex="true"
+ content="@load(vm.formDocument.file) @converter('hu.user.lis.ui.converter.ByteArrayToAMediaConverter')"/>
+ </center>
+ </borderlayout>
+ </tabpanel>
+ </tabpanels>
+ </tabbox>
+
+</zk>
\ No newline at end of file
<vlayout>
<hlayout valign="middle">
<menubar autodrop="true" hflex="true">
+ <!-- <menuitem label="POPUP" onClick="@command('onShowPopup')"/>-->
+
<menuitem iconSclass="z-icon-group" label="Partnerek"
onClick="@command(vm.selectPage('~./partners.zul'))"/>
<menuitem iconSclass="z-icon-tasks" label="Projektek"
<!-- onClick="@command(vm.selectPage('/camunda'))"/>-->
</menubar>
<hbox hflex="min" pack="right">
- <textbox value="@bind(vm.searchPhrase)" onOK="@command('search')" disabled="true"></textbox>
+ <textbox value="@bind(vm.searchPhrase)" onOK="@command('search')" disabled="true"/>
<button iconSclass="z-icon-search"/>
</hbox>
</hlayout>
<toolbar>
<label value="Számla sorszáma"/>
<separator orient="vertical"/>
- <textbox value="@bind(vm.invoiceNumber)" onChange="@command('search')"/>
-
- <space bar="true"/>
+ <textbox value="@bind(vm.invoiceNumber)" onChange="@command('search')" onOK="@command('search')"/>
<label value="Partner" visible="@bind(vm.partnerRequired)"/>
<separator orient="vertical" visible="@bind(vm.partnerRequired)"/>
</selectbox>
</toolbar>
</north>
- <center border="none" flex="true">
- <listbox vflex="true" model="@load(vm.paymentsDataModel)" multiple="false">
- <listhead sizable="true">
- <listheader label="Dátum" align="left"/>
- <listheader label="Nettó összeg" align="right"/>
- <listheader label="Bruttó összeg" align="right"/>
- <listheader label="ÁFA összeg" align="right"/>
- </listhead>
- <template name="model">
- <listitem>
- <listcell label="@load(each.paymentDate)"/>
- <listcell label="@load(each.netAmount)"/>
- <listcell label="@load(each.grossAmount)"/>
- <listcell label="@load(each.vatAmount)"/>
- </listitem>
- </template>
- </listbox>
+ <center border="none" hflex="true" vflex="true">
+
+ <hbox hflex="true" vflex="true" visible="@load(vm.formDocument)">
+ <window title="Számla adatok" hflex="true" vflex="true" border="normal" style="margin: 10px">
+ <include src="~./form/invoice-form.zul"/>
+ </window>
+
+ <splitter/>
+
+ <window title="Számla kiegyenlítés" hflex="true" vflex="true" border="normal"
+ style="margin: 10px">
+ <borderlayout>
+ <north hflex="true">
+ <toolbar>
+ <toolbarbutton label="Hozzáadás" iconSclass="z-icon-plus"
+ onClick="@command('onCreatePayment')"
+ disabled="@bind(vm.newPaymentDisabled)"/>
+ <toolbarbutton label="Törlés" iconSclass="z-icon-remove"
+ onClick="@command('onDeletePayment')"
+ disabled="@load(empty vm.selectedPayment)"/>
+ </toolbar>
+ </north>
+ <center border="none" hflex="true" vflex="true">
+ <listbox vflex="true" model="@load(vm.paymentsDataModel)"
+ autopaging="true" pagingPosition="top" multiple="false"
+ selectedItem="@bind(vm.selectedPayment)">
+ <listhead sizable="true">
+ <listheader label="Dátum" align="left"/>
+ <listheader label="Nettó összeg" align="right"/>
+ <listheader label="Bruttó összeg" align="right"/>
+ <listheader label="ÁFA összeg" align="right"/>
+ </listhead>
+ <template name="model">
+ <listitem>
+ <listcell>
+ <datebox value="@bind(each.paymentDate)"
+ format="yyyy. MM. dd." inplace="true" width="100%"
+ onChange="@command('onPaymentChanged', entity=each)"/>
+ </listcell>
+ <listcell>
+ <doublebox value="@bind(each.netAmount)"
+ format="#,###.##" locale="hu" inplace="true" width="100%"
+ onChange="@command('onPaymentChanged', entity=each)"/>
+ </listcell>
+ <listcell>
+ <doublebox value="@bind(each.grossAmount)"
+ format="#,###.##" locale="hu" inplace="true" width="100%"
+ onChange="@command('onPaymentChanged', entity=each)"/>
+ </listcell>
+ <listcell>
+ <doublebox value="@bind(each.vatAmount)"
+ format="#,###.##" locale="hu" inplace="true" width="100%"
+ onChange="@command('onPaymentChanged', entity=each)"/>
+ </listcell>
+ </listitem>
+ </template>
+ </listbox>
+ </center>
+ </borderlayout>
+
+ </window>
+ </hbox>
+
</center>
</borderlayout>
</window>
<bandbox id="entityBandBox" autodrop="true" hflex="true" mold="rounded"
value="@load(vmEntity.selectedEntity) @converter(vmEntity.displayConverter)"
onChanging="@command('onEntityBandChanging')" onOpen="@command('onEntityBandOpen')"
- forward="onOK=submit.onClick, onCancel=cancel.onClick">
+ forward="onOK=submit.onClick, onCancel=cancel.onClick" disabled="${readonly}" readonly="${readonly}">
<attribute c:name="_doKeyDown">
<![CDATA[
function (evt) {
<groupId>org.camunda.bpm.springboot</groupId>
<artifactId>camunda-bpm-spring-boot-starter-rest</artifactId>
<version>${camunda.spring-boot.version}</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter-tomcat</artifactId>
+ </exclusion>
+ </exclusions>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
</plugins>
</build>
<dependencies>
+ <dependency>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter-web</artifactId>
+ <exclusions>
+ <exclusion>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter-tomcat</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.apache.tomcat.embed</groupId>
+ <artifactId>tomcat-embed-el</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.apache.tomcat.embed</groupId>
+ <artifactId>tomcat-embed-core</artifactId>
+ </exclusion>
+ <exclusion>
+ <artifactId>tomcat-embed-websocket</artifactId>
+ <groupId>org.apache.tomcat.embed</groupId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter-undertow</artifactId>
+ </dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<artifactId>mapstruct</artifactId>
<version>${org.mapstruct.version}</version>
</dependency>
- <dependency>
- <groupId>org.apache.logging.log4j</groupId>
- <artifactId>log4j-api</artifactId>
- <version>2.20.0</version>
- </dependency>
+ <!-- <dependency>-->
+ <!-- <groupId>org.apache.logging.log4j</groupId>-->
+ <!-- <artifactId>log4j-api</artifactId>-->
+ <!-- <version>2.20.0</version>-->
+ <!-- </dependency>-->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>