Associate VAT added
authorVásáry Dániel <vasary@elgekko.net>
Tue, 23 Jan 2024 16:39:06 +0000 (17:39 +0100)
committerVásáry Dániel <vasary@elgekko.net>
Tue, 23 Jan 2024 16:39:06 +0000 (17:39 +0100)
lis-db/migrations/README
lis-db/migrations/scripts/026_add_vat_to_associate.sql [new file with mode: 0644]
lis-db/src/main/java/hu/user/lis/db/Associate.java
lis-db/src/main/java/hu/user/lis/db/Vat.java [new file with mode: 0644]
lis-ui/src/main/java/hu/user/lis/ui/converter/VatConverter.java [new file with mode: 0644]
lis-ui/src/main/java/hu/user/lis/ui/editor/validator/AssociateFormValidator.java
lis-ui/src/main/resources/web/editor/associate-editor.zul

index c7b8cc869524e251cbc8a2b8cc9853284194f9fc..607ec8713fbe7789437ab72cdebb92bfe870aa34 100644 (file)
@@ -1,4 +1,4 @@
-Welcome!
+db2 Welcome!
 
 This is an MyBatis Migration repository.  You can specify the repository
 directory when running migrations using the --path=<repos-directory>
diff --git a/lis-db/migrations/scripts/026_add_vat_to_associate.sql b/lis-db/migrations/scripts/026_add_vat_to_associate.sql
new file mode 100644 (file)
index 0000000..bdca763
--- /dev/null
@@ -0,0 +1,11 @@
+-- // add vat to associate
+-- Migration SQL that makes the change goes here.
+
+ALTER TABLE associate
+    ADD COLUMN monthly_vat INTEGER NOT NULL DEFAULT 0;
+
+-- //@UNDO
+-- SQL to undo the change goes here.
+
+ALTER TABLE associate DROP COLUMN monthly_vat;
+CALL SYSPROC.ADMIN_CMD('REORG TABLE associate');
index 2ead6ae8da23687e99c1ba324846fc5331ab25d1..a9c27194367e5b0920242a54a6e6393d5db76fac 100644 (file)
@@ -24,6 +24,8 @@ public class Associate extends IdEntity {
 
     private double monthlyCost;
 
+    private Vat monthlyVat;
+
     private boolean active;
 
     private boolean remotelyAuthenticated;
diff --git a/lis-db/src/main/java/hu/user/lis/db/Vat.java b/lis-db/src/main/java/hu/user/lis/db/Vat.java
new file mode 100644 (file)
index 0000000..19e3e08
--- /dev/null
@@ -0,0 +1,20 @@
+package hu.user.lis.db;
+
+
+import lombok.Getter;
+
+@Getter
+public enum Vat {
+    PERCENT_0(0, "ÁFA mentes"),
+    PERCENT_5(5, "5%"),
+    PERCENT_18(18, "18%"),
+    PERCENT_27(27, "27%");
+
+    final float val;
+    final String display;
+
+    Vat(float val, String display) {
+        this.val = val;
+        this.display = display;
+    }
+}
diff --git a/lis-ui/src/main/java/hu/user/lis/ui/converter/VatConverter.java b/lis-ui/src/main/java/hu/user/lis/ui/converter/VatConverter.java
new file mode 100644 (file)
index 0000000..f8738b7
--- /dev/null
@@ -0,0 +1,38 @@
+package hu.user.lis.ui.converter;
+
+import hu.user.lis.db.Vat;
+import org.springframework.stereotype.Component;
+import org.zkoss.bind.BindContext;
+import org.zkoss.bind.Converter;
+import org.zkoss.zul.ListModel;
+import org.zkoss.zul.Selectbox;
+import org.zkoss.zul.ext.Selectable;
+
+import java.util.Objects;
+
+@Component
+public class VatConverter implements Converter<Object, Vat, Selectbox> {
+    @Override
+    public Object coerceToUi(Vat vat, Selectbox box, BindContext bindContext) {
+        if (Objects.isNull(vat)) {
+            return IGNORED_VALUE;
+        }
+        final ListModel<?> model = box.getModel();
+        ((Selectable<Vat>) model).clearSelection();
+        for (int i = 0; i < model.getSize(); i++) {
+            Vat currentVat = (Vat) model.getElementAt(i);
+            if (currentVat.equals(vat)) {
+                ((Selectable<Vat>) model).addToSelection(currentVat);
+                return i;
+            }
+        }
+        return IGNORED_VALUE;
+    }
+
+    @Override
+    public Vat coerceToBean(Object order, Selectbox bandbox, BindContext bindContext) {
+        ListModel<Vat> model = bandbox.getModel();
+        Vat result = model.getElementAt((int) order);
+        return result;
+    }
+}
\ No newline at end of file
index 4ffae5638c5470dca9332d47a8fe02faf88c3f36..552e862d422e8e369defae3107a057ea8df312fa 100644 (file)
@@ -12,7 +12,8 @@ public class AssociateFormValidator extends FormValidator<Associate> {
                 validator(entity.getName(), this::validateString, "A 'Név' kitöltése kötelező."),
                 validator(entity.getLogin(), this::validateString, "A 'Login' kitöltése kötelező."),
                 validator(entity, this::validatePassword, "A 'Jelszó' kitöltése kötelező."),
-                validator(entity.getMonthlyCost(), this::validateDouble, "A 'Havi önköltség' kitöltése kötelező.")
+                validator(entity.getMonthlyCost(), this::validateDouble, "A 'Havi önköltség' kitöltése kötelező."),
+                validator(entity.getMonthlyVat(), this::validateNotNull, "A 'Havi ÁFA' kitöltése kötelező.")
         };
     }
 
index 8caeb058aae7ab8d4439d9e1816d640bace76c1e..ec4de9cc6c16ea777341968fe015d9bd0547e652 100644 (file)
@@ -1,6 +1,10 @@
 <?link rel="stylesheet" type="text/css" href="~./static/css/skeleton.css" ?>
 <?link rel="stylesheet" type="text/css" href="~./static/css/webclient.css" ?>
 <zk>
+    <zscript>
+        import hu.user.lis.db.Vat;
+        ListModelList vats = new ListModelList(Vat.values());
+    </zscript>
     <window id="associatePopup" width="60%" height="450px" closable="true"
             viewModel="@id('vm') @init('hu.user.lis.ui.editor.AssociateEditorModel')">
         <caption label="Munkatárs szerkesztés"/>
                                              forward="onOK=submit.onClick, onCancel=cancel.onClick"/>
                                     <button iconSclass="z-icon-eye"/>
                                 </hlayout>
-                                <label value="Havi önköltség"/>
-                                <doublebox value="@bind(vm.formDocument.monthlyCost) @validator(vm)"
-                                           format="#,###.##" locale="hu" instant="true"
-                                           forward="onOK=submit.onClick, onCancel=cancel.onClick"/>
+                                <hlayout>
+                                    <vlayout>
+                                        <label value="Havi önköltség"/>
+                                        <doublebox value="@bind(vm.formDocument.monthlyCost) @validator(vm)"
+                                                   format="#,###.##" locale="hu" instant="true"
+                                                   forward="onOK=submit.onClick, onCancel=cancel.onClick"/>
+                                    </vlayout>
+                                    <vlayout>
+                                        <label value="Havi önköltség ÁFA"/>
+                                        <selectbox model="${vats}"
+                                                   selectedIndex="@bind(vm.formDocument.monthlyVat) @converter('hu.user.lis.ui.converter.VatConverter') @validator(vm)"
+                                                   forward="onOK=submit.onClick, onCancel=cancel.onClick">
+                                            <template name="model">
+                                                ${each.display}
+                                            </template>
+                                        </selectbox>
+
+                                    </vlayout>
+                                </hlayout>
                                 <label value="Aktív"/>
                                 <checkbox mold="switch" checked="@bind(vm.formDocument.active) @validator(vm)"/>
                                 <label value="Jogok"/>