Intermediate state save
authorVásáry Dániel <vasary@elgekko.net>
Thu, 29 Feb 2024 15:41:18 +0000 (16:41 +0100)
committerVásáry Dániel <vasary@elgekko.net>
Thu, 29 Feb 2024 15:41:18 +0000 (16:41 +0100)
sly-crm-db/src/main/java/hu/user/lis/db/Currency.java
sly-crm-ui/src/main/java/hu/user/lis/ui/converter/DoubleToStringConverter.java
sly-crm-ui/src/main/java/hu/user/lis/ui/data/common/CachedSpringDataModel.java
sly-crm-ui/src/main/resources/web/editor/import-invoice-assign-editor.zul
sly-crm-ui/src/main/resources/web/form/attachment-form-dd.zul [deleted file]
sly-crm-ui/src/main/resources/web/form/invoice-data-form.zul
sly-crm-ui/src/main/resources/web/form/invoice-form.zul
sly-crm-ui/src/main/resources/web/index.zul
sly-crm-ui/src/main/resources/web/static/js/numberbox.utils.js [new file with mode: 0644]

index 92a51c29473b4f7ad4ad81d2dfa39867ddef9b13..b0308c3d410e2aac752f4d0afc0e24ccf5e4d449 100644 (file)
@@ -11,4 +11,5 @@ public enum Currency {
     Currency(int val) {
         this.val = val;
     }
+
 }
index dde634b91a26d8f3dbc3a6390c471670dd3a8b58..f534a97e9e33f6c3ba1f323babefbe746ee45346 100644 (file)
@@ -1,5 +1,6 @@
 package hu.user.lis.ui.converter;
 
+import lombok.extern.log4j.Log4j2;
 import org.zkoss.bind.BindContext;
 import org.zkoss.bind.Converter;
 import org.zkoss.zk.ui.Component;
@@ -7,13 +8,15 @@ import org.zkoss.zk.ui.Component;
 import java.math.RoundingMode;
 import java.text.NumberFormat;
 import java.util.Locale;
+import java.util.Objects;
 
+@Log4j2
 public class DoubleToStringConverter implements Converter<String, Double, Component> {
-    static private NumberFormat nf = NumberFormat.getInstance(new Locale("hu", "HU"));
+    static private final NumberFormat nf = NumberFormat.getInstance(new Locale("hu", "HU"));
 
     static {
         nf.setMaximumFractionDigits(2);
-        nf.setMinimumFractionDigits(2);
+        nf.setMinimumFractionDigits(0);
         nf.setRoundingMode(RoundingMode.CEILING);
     }
 
@@ -24,6 +27,14 @@ public class DoubleToStringConverter implements Converter<String, Double, Compon
 
     @Override
     public Double coerceToBean(String data, Component listCell, BindContext bindContext) {
-        return null;
+        Double result = null;
+        try {
+            if (Objects.nonNull(data)) {
+                result = (Double) nf.parse(data.replace(" ", ""));
+            }
+        } catch (Exception e) {
+            log.error("Can't parse {} to double type", data);
+        }
+        return result;
     }
 }
index e3a9d946ddf95b24070de2c7fca3f67ef8b2bd0c..168f1d0cee3fce591717af8dd95aefab7d09ce34 100644 (file)
@@ -55,23 +55,15 @@ public abstract class CachedSpringDataModel<T> extends CachedDataModel<T> {
         if (Objects.isNull(profile)) {
             return null;
         }
-        try {
-            savedColumns = entityDataService.fromJSON(profile.getSetting(), ColDef[].class);
-        } catch (Exception e) {
-            log.warn(e.getMessage());
-            return null;
-        }
-
+        savedColumns = entityDataService.fromJSON(profile.getSetting(), ColDef[].class);
         if (Objects.isNull(savedColumns)) {
             return null;
         }
-
         Set<String> savedColumnNames = Arrays.stream(savedColumns).map(ColDef::getName).collect(Collectors.toSet());
         Set<String> currentColumnNames = columns.stream().map(ColDef::getName).collect(Collectors.toSet());
         if (!currentColumnNames.equals(savedColumnNames)) {
             return null;
         }
-
         return savedColumns;
     }
 
index 7b95ef88fa1ede6ad1c0eb65f7d3c7e01edded3f..cb17700935434e82f2f3e6b14cb51963d314d664 100644 (file)
@@ -1,8 +1,6 @@
 <?import hu.user.lis.workflow.invoice.data.InvoiceImportStatus?>
-<?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>
+<zk xmlns:c="client/attribute" xmlns:w="client">
     <zscript>
         import hu.user.lis.db.Currency;
         ListModelList currencies = new ListModelList(Currency.values());
                                     </vlayout>
                                     <vlayout>
                                         <label value="Nettó összeg"/>
-                                        <doublebox readonly="false"
-                                                   value="@bind(vm.formDocument.netAmount) @validator(vm)"
-                                                   format="#,###.##" locale="hu"
-                                                   forward="onOK=submit.onClick, onCancel=cancel.onClick"/>
+                                        <textbox style="text-align: right" instant="true"
+                                                 value="@bind(vm.formDocument.netAmount) @validator(vm) @converter('hu.user.lis.ui.converter.DoubleToStringConverter')"
+                                                 onChange="@command('onNetAmountChange')"
+                                                 forward="onOK=submit.onClick, onCancel=cancel.onClick"
+                                                 w:onBind="configureFloat(this.$n())"
+                                                 c:onPaste="preventPastingNonDigit(event)"/>
                                     </vlayout>
                                     <vlayout>
                                         <label value="Bruttó összeg"/>
-                                        <doublebox readonly="false"
-                                                   value="@bind(vm.formDocument.grossAmount) @validator(vm)"
-                                                   format="#,###.##" locale="hu"
-                                                   forward="onOK=submit.onClick, onCancel=cancel.onClick"/>
+                                        <textbox style="text-align: right" instant="true"
+                                                 value="@bind(vm.formDocument.grossAmount) @validator(vm) @converter('hu.user.lis.ui.converter.DoubleToStringConverter')"
+                                                 forward="onOK=submit.onClick, onCancel=cancel.onClick"
+                                                 w:onBind="configureFloat(this.$n())"
+                                                 c:onPaste="preventPastingNonDigit(event)"/>
                                     </vlayout>
                                     <vlayout>
-                                        <label value="ÁFA"/>
-                                        <doublebox readonly="false"
-                                                   value="@bind(vm.formDocument.vatAmount) @validator(vm)"
-                                                   format="#,###.##" locale="hu"
-                                                   forward="onOK=submit.onClick, onCancel=cancel.onClick"/>
+                                        <label value="ÁFA (HUF)"/>
+                                        <textbox style="text-align: right" instant="true"
+                                                 value="@bind(vm.formDocument.vatAmount) @validator(vm) @converter('hu.user.lis.ui.converter.DoubleToStringConverter')"
+                                                 forward="onOK=submit.onClick, onCancel=cancel.onClick"
+                                                 w:onBind="configureFloat(this.$n())"
+                                                 c:onPaste="preventPastingNonDigit(event)"/>
                                     </vlayout>
                                 </hlayout>
                                 <hlayout>
diff --git a/sly-crm-ui/src/main/resources/web/form/attachment-form-dd.zul b/sly-crm-ui/src/main/resources/web/form/attachment-form-dd.zul
deleted file mode 100644 (file)
index 8f47cbb..0000000
+++ /dev/null
@@ -1,116 +0,0 @@
-<!--<?component name="dropupload" inline="true" class="hu.user.lis.ui.editor.widget.Dropupload"?>-->
-<zk>
-    <script><![CDATA[
-        zk.afterMount(function () {
-            initListeners();
-            return false;
-        });
-
-        function initListeners() {
-            console.log("Init listeners");
-            var dropZone = document.getElementById('dropzone');
-            dropZone.addEventListener("dragenter", dragenter, false);
-            dropZone.addEventListener("dragover", dragover, false);
-            dropZone.addEventListener("drop", dropInvoice, false);
-        }
-
-        function dragenter(e) {
-        //console.log("dragenter");
-              e.stopPropagation();
-              e.preventDefault();
-        }
-
-        function dragover(e) {
-        //console.log("dragover");
-          e.stopPropagation();
-          e.preventDefault();
-        }
-
-        function drop(e, eventSource, otherUploadButton) {
-        //console.log("drop event:");
-            e.stopPropagation();
-            e.preventDefault();
-
-            var data = e.dataTransfer;
-            var files = data.files;
-
-            callUploadCommand(files, eventSource, otherUploadButton);
-        }
-
-        function callUploadCommand(files, eventSource, otherUploadButton) {
-            var uploadButton =  zk.Widget.$(jq('$' + eventSource));
-            var otherButton =  zk.Widget.$(jq('$' + otherUploadButton));
-
-            var desktopId = uploadButton.desktop.uuid;
-            var prothost = location.protocol + "//" + location.host;
-            var actionURL = prothost + "/pdfinvoice/zkau/upload?uuid=" + uploadButton.uuid + "&dtid=" + desktopId + "&sid=0";
-
-            var uploadButtonCounter = uploadButton._uplder.sid;
-            var globalUploadCounter = uploadButtonCounter + otherButton._uplder.sid;
-            uploadButton._uplder.sid = uploadButtonCounter+1;
-
-            var xhr = new XMLHttpRequest();
-            xhr.open("POST", actionURL, true);
-            xhr.setRequestHeader("Upgrade-Insecure-Requests", "1");
-            var formData = new FormData();
-            formData.append("file", files[0]);
-
-            xhr.onreadystatechange = function(e) {
-                if ( 4 == this.readyState ) {
-                    zul.Upload.sendResult(uploadButton.uuid, 'z__ul_' + globalUploadCounter, "'" + uploadButtonCounter +  "'");
-                }
-            };
-            xhr.send(formData);
-        }
-
-    ]]>
-    </script>
-    <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.entityDocumentDataModel.selectedDocument)"/>
-            </toolbar>
-        </north>
-        <west title="Fájlok" size="160px" flex="true" border="none" splittable="true" collapsible="true">
-            <vlayout hflex="true" vflex="true">
-                <listbox vflex="true" hflex="true" model="@load(vm.entityDocumentDataModel)" multiple="false"
-                         sizedByContent="true" onSelect="@command(vm.entityDocumentDataModel.onSelectionChanged())">
-                    <listhead visible="false">
-                        <listheader hflex="true" align="center"/>
-                    </listhead>
-                    <template name="model">
-                        <listitem>
-                            <listcell iconSclass="z-icon-file-pdf-o" style="font-size: 1.5em">
-                                <vlayout>
-                                    <label value="@load(each.name)"/>
-                                </vlayout>
-                            </listcell>
-                        </listitem>
-                    </template>
-                </listbox>
-                <!--Robi hack-->
-                <div id="listenerDiv" onFileUpload="@command('onFileUpload')"/>
-                <h:div xmlns:h="http://www.w3.org/1999/xhtml" id="dropzone"
-                       style="width: 99%; height: 50px; background-color: lightgray" align="center">
-                    <h:div>
-                        <h:ul id="image_bar">Drag And Drop Számla</h:ul>
-                    </h:div>
-                </h:div>
-
-                <!--                custom komponens-->
-                <dropfile hflex="true" height="100px" text="aaaaaaaaaaa"/>
-
-            </vlayout>
-        </west>
-        <center border="none" hflex="true" vflex="true">
-            <iframe hflex="true" vflex="true"
-                    content="@load(vm.entityDocumentDataModel.selectedDocument.file) @converter('hu.user.lis.ui.converter.ByteArrayToAMediaConverter')"/>
-        </center>
-
-
-    </borderlayout>
-</zk>
\ No newline at end of file
index b0434af7a48c1f5dad2df88f087fe0303dbdb113..d00576647354ccada630f32e344cd5e5106201a8 100644 (file)
@@ -1,5 +1,5 @@
 <?component name="entity-selector" inline="true" class="hu.user.lis.ui.editor.widget.EntitySelector"?>
-<zk xmlns:c="client/attribute">
+<zk xmlns:c="client/attribute" xmlns:w="client">
     <script src="~./static/js/clipboard.utils.js"/>
     <zscript>
         import hu.user.lis.db.Currency;
             </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)"
-                           c:onPaste="preventPastingNonDigit(event)"/>
+                <textbox style="text-align: right" instant="true"
+                         value="@bind(vm.formDocument.netAmount) @validator(vm) @converter('hu.user.lis.ui.converter.DoubleToStringConverter')"
+                         onChange="@command('onNetAmountChange')"
+                         forward="onOK=submit.onClick, onCancel=cancel.onClick"
+                         disabled="@bind(vm.readonlyForm)"
+                         w:onBind="configureFloat(this.$n())"
+                         c:onPaste="preventPastingNonDigit(event)"/>
             </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)"
-                           c:onPaste="preventPastingNonDigit(event)"/>
+                <textbox style="text-align: right" instant="true"
+                         value="@bind(vm.formDocument.grossAmount) @validator(vm) @converter('hu.user.lis.ui.converter.DoubleToStringConverter')"
+                         forward="onOK=submit.onClick, onCancel=cancel.onClick"
+                         disabled="@bind(vm.readonlyForm)"
+                         w:onBind="configureFloat(this.$n())"
+                         c:onPaste="preventPastingNonDigit(event)"/>
             </vlayout>
             <vlayout>
                 <label value="ÁFA (HUF)"/>
-                <doublebox value="@bind(vm.formDocument.vatAmount) @validator(vm)"
-                           format="#,###.##" locale="hu" instant="true"
-                           forward="onOK=submit.onClick, onCancel=cancel.onClick"
-                           disabled="@bind(vm.readonlyForm)"
-                           c:onPaste="preventPastingNonDigit(event)"/>
+                <textbox style="text-align: right" instant="true"
+                         value="@bind(vm.formDocument.vatAmount) @validator(vm) @converter('hu.user.lis.ui.converter.DoubleToStringConverter')"
+                         forward="onOK=submit.onClick, onCancel=cancel.onClick"
+                         disabled="@bind(vm.readonlyForm)"
+                         w:onBind="configureFloat(this.$n())"
+                         c:onPaste="preventPastingNonDigit(event)"/>
             </vlayout>
         </hlayout>
         <hlayout>
index 5a52302a05c62d525001699e415f0e3a63c9be55..bedef7658d06b381b9fd63c14a04b91c04897d77 100644 (file)
@@ -1,6 +1,5 @@
 <?component name="entity-selector" inline="true" class="hu.user.lis.ui.editor.widget.EntitySelector"?>
-<zk xmlns:c="client/attribute">
-    <script src="~./static/js/clipboard.utils.js"/>
+<zk xmlns:c="client/attribute" xmlns:w="client">
     <zscript>
         import hu.user.lis.db.Currency;
         ListModelList currencies = new ListModelList(Currency.values());
                         </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)"
-                                       c:onPaste="preventPastingNonDigit(event)"/>
+                            <textbox style="text-align: right" instant="true"
+                                     value="@bind(vm.formDocument.netAmount) @validator(vm) @converter('hu.user.lis.ui.converter.DoubleToStringConverter')"
+                                     onChange="@command('onNetAmountChange')"
+                                     forward="onOK=submit.onClick, onCancel=cancel.onClick"
+                                     disabled="@bind(vm.readonlyForm)"
+                                     w:onBind="configureFloat(this.$n())"
+                                     c:onPaste="preventPastingNonDigit(event)"/>
                         </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)"
-                                       c:onPaste="preventPastingNonDigit(event)"/>
+                            <textbox style="text-align: right" instant="true"
+                                     value="@bind(vm.formDocument.grossAmount) @validator(vm) @converter('hu.user.lis.ui.converter.DoubleToStringConverter')"
+                                     forward="onOK=submit.onClick, onCancel=cancel.onClick"
+                                     disabled="@bind(vm.readonlyForm)"
+                                     w:onBind="configureFloat(this.$n())"
+                                     c:onPaste="preventPastingNonDigit(event)"/>
                         </vlayout>
                         <vlayout>
                             <label value="ÁFA (HUF)"/>
-                            <doublebox value="@bind(vm.formDocument.vatAmount) @validator(vm)"
-                                       format="#,###.##" locale="hu" instant="true"
-                                       forward="onOK=submit.onClick, onCancel=cancel.onClick"
-                                       disabled="@bind(vm.readonlyForm)"
-                                       c:onPaste="preventPastingNonDigit(event)"/>
+                            <textbox style="text-align: right" instant="true"
+                                     value="@bind(vm.formDocument.vatAmount) @validator(vm) @converter('hu.user.lis.ui.converter.DoubleToStringConverter')"
+                                     forward="onOK=submit.onClick, onCancel=cancel.onClick"
+                                     disabled="@bind(vm.readonlyForm)"
+                                     w:onBind="configureFloat(this.$n())"
+                                     c:onPaste="preventPastingNonDigit(event)"/>
                         </vlayout>
                     </hlayout>
                     <hlayout>
index 2fe7e4b3eab980c7a4c1c069def3b36a3a15a793..6066abaf6e817917e6e9ab4491ab1333e21b44b9 100644 (file)
@@ -2,7 +2,9 @@
 <?link rel="stylesheet" type="text/css" href="~./static/css/skeleton.css" ?>
 <?link rel="stylesheet" type="text/css" href="~./static/css/webclient.css" ?>
 <zk>
-    <!--    <script type="text/javascript" src="~./static/js/cleave.min.js"/>-->
+    <script type="text/javascript" src="~./static/js/cleave.min.js"/>
+    <script type="text/javascript" src="~./static/js/clipboard.utils.js"/>
+    <script type="text/javascript" src="~./static/js/numberbox.utils.js"/>
     <style>
         .header > .z-caption-content {
         width: 100%;
                         <label value="@load(vm.buildInformation.name)"/>
                         <separator orient="vertical"/>
                         <label style="font-size: 0.8em" value="@load(vm.buildInformation.buildVersion)"/>
-
-                        <!--                        <textbox id="nr" width='150px' style="text-align: right" placeholder="1 234,56"-->
-                        <!--                                 w:onBind="new Cleave(this.$n(), {numeral: true, numeralDecimalMark:',', delimiter: ' '});"/>-->
-                        <!--                        <numberbox value="111222"/>-->
                     </hlayout>
                 </div>
                 <div style="display: inline; float: right">
diff --git a/sly-crm-ui/src/main/resources/web/static/js/numberbox.utils.js b/sly-crm-ui/src/main/resources/web/static/js/numberbox.utils.js
new file mode 100644 (file)
index 0000000..72319c5
--- /dev/null
@@ -0,0 +1,7 @@
+function configureFloat(widget) {
+    new Cleave(widget, {
+        numeral: true,
+        numeralDecimalMark:',',
+        delimiter: ' '
+    });
+}