invoice frontend improvements

This commit is contained in:
Peter Papp
2021-05-04 17:43:42 +02:00
parent c65414f0c4
commit 62820c8ddb
6 changed files with 121 additions and 45 deletions
@@ -28,8 +28,8 @@ class StoreInvoiceRequest extends FormRequest
'variable_number' => 'required|string',
'client' => 'required',
'items' => 'required|string',
'discount_type' => 'nullable|string',
'discount_rate' => 'nullable|integer',
'discount_type' => 'sometimes|string',
'discount_rate' => 'sometimes|integer',
'delivery_at' => 'required|date',
];
}
+54 -3
View File
@@ -56,10 +56,10 @@
"/chunks/oasis/invoices/client-detail.js": "/chunks/oasis/invoices/client-detail.js?id=775aa4205c9189fcf6bc",
"/chunks/oasis/invoices/client-invoices.js": "/chunks/oasis/invoices/client-invoices.js?id=b9aed08d93a606918d22",
"/chunks/oasis/invoices/create-client.js": "/chunks/oasis/invoices/create-client.js?id=2416e9a56896fedb15b7",
"/chunks/oasis/invoices/create-invoice.js": "/chunks/oasis/invoices/create-invoice.js?id=389c9aafcd4e462bb4b9",
"/chunks/oasis/invoices/create-invoice.js": "/chunks/oasis/invoices/create-invoice.js?id=b9a7dbd7cdb79616338c",
"/chunks/oasis/invoices/list.js": "/chunks/oasis/invoices/list.js?id=a622e568efb24e955520",
"/chunks/oasis/invoices/profile.js": "/chunks/oasis/invoices/profile.js?id=06b0487a934116de2f95",
"/chunks/oasis/invoices~chunks/platform~chunks/shared.js": "/chunks/oasis/invoices~chunks/platform~chunks/shared.js?id=a53a01abf7a98a9c2d15",
"/chunks/oasis/invoices~chunks/platform~chunks/shared.js": "/chunks/oasis/invoices~chunks/platform~chunks/shared.js?id=02d307d644549673764b",
"/chunks/oasis/platba.js": "/chunks/oasis/platba.js?id=9a20bc7c6b8570f936a1",
"/chunks/oasis/platba~chunks/oasis/upgrade-billing~chunks/oasis/upgrade-plan~chunks/upgrade-billing~ch~6880400b.js": "/chunks/oasis/platba~chunks/oasis/upgrade-billing~chunks/oasis/upgrade-plan~chunks/upgrade-billing~ch~6880400b.js?id=0c8d1c3cca084baa177f",
"/chunks/oasis/sign-up.js": "/chunks/oasis/sign-up.js?id=e53eeb48ebabae259f9c",
@@ -334,5 +334,56 @@
"/chunks/oasis/invoices/create-invoice.245181c4fb62c1df4375.hot-update.js": "/chunks/oasis/invoices/create-invoice.245181c4fb62c1df4375.hot-update.js",
"/chunks/oasis/invoices/create-invoice.0a8e0c76914a1c00d6f7.hot-update.js": "/chunks/oasis/invoices/create-invoice.0a8e0c76914a1c00d6f7.hot-update.js",
"/chunks/oasis/invoices/create-invoice.258f3eb33557ccbac3ea.hot-update.js": "/chunks/oasis/invoices/create-invoice.258f3eb33557ccbac3ea.hot-update.js",
"/chunks/oasis/invoices/create-invoice.cb8ab124d3248115bbeb.hot-update.js": "/chunks/oasis/invoices/create-invoice.cb8ab124d3248115bbeb.hot-update.js"
"/chunks/oasis/invoices/create-invoice.cb8ab124d3248115bbeb.hot-update.js": "/chunks/oasis/invoices/create-invoice.cb8ab124d3248115bbeb.hot-update.js",
"/js/main.e5cb54ffa973f245f788.hot-update.js": "/js/main.e5cb54ffa973f245f788.hot-update.js",
"/chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-index~chu~30c3eb1b.js": "/chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-index~chu~30c3eb1b.js?id=d47268e349bd2772cd71",
"/chunks/admin~chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/~b2b17caf.js": "/chunks/admin~chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/~b2b17caf.js?id=55d2b5e5a0fdda04fe42",
"/chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-index~chunks/app-others~chunks~2e1d0044.js": "/chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-index~chunks/app-others~chunks~2e1d0044.js?id=15bd59d080c7feb21c94",
"/chunks/app-language~chunks/app-settings~chunks/dashboard~chunks/dashboard-oasis~chunks/invoices~chun~e9fdda75.js": "/chunks/app-language~chunks/app-settings~chunks/dashboard~chunks/dashboard-oasis~chunks/invoices~chun~e9fdda75.js?id=62ce022b3544cd69a5bd",
"/chunks/oasis/invoices/create-invoice.e5cb54ffa973f245f788.hot-update.js": "/chunks/oasis/invoices/create-invoice.e5cb54ffa973f245f788.hot-update.js",
"/vendors~chunks/admin~chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~031a0bf8.js": "/vendors~chunks/admin~chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~031a0bf8.js?id=e5355666d39ae3c90ece",
"/vendors~chunks/admin~chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~6b50d93b.js": "/vendors~chunks/admin~chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~6b50d93b.js?id=bcb779faea92dfb55517",
"/chunks/oasis/invoices/create-invoice.29f5dac0d6de4c926c48.hot-update.js": "/chunks/oasis/invoices/create-invoice.29f5dac0d6de4c926c48.hot-update.js",
"/js/main.7762a0cb7c8f081da7a8.hot-update.js": "/js/main.7762a0cb7c8f081da7a8.hot-update.js",
"/chunks/oasis/invoices/create-invoice.7762a0cb7c8f081da7a8.hot-update.js": "/chunks/oasis/invoices/create-invoice.7762a0cb7c8f081da7a8.hot-update.js",
"/chunks/oasis/invoices/create-invoice.bf2ff3653cab334dd3db.hot-update.js": "/chunks/oasis/invoices/create-invoice.bf2ff3653cab334dd3db.hot-update.js",
"/chunks/oasis/invoices/create-invoice.6f4ae4ca5c84af0df008.hot-update.js": "/chunks/oasis/invoices/create-invoice.6f4ae4ca5c84af0df008.hot-update.js",
"/chunks/oasis/invoices/create-invoice.f4f34464008780d72ad1.hot-update.js": "/chunks/oasis/invoices/create-invoice.f4f34464008780d72ad1.hot-update.js",
"/chunks/oasis/invoices/create-invoice.011d114f24bd5b37350a.hot-update.js": "/chunks/oasis/invoices/create-invoice.011d114f24bd5b37350a.hot-update.js",
"/chunks/oasis/invoices/create-invoice.e058013474e665ca119c.hot-update.js": "/chunks/oasis/invoices/create-invoice.e058013474e665ca119c.hot-update.js",
"/chunks/oasis/invoices/create-invoice.d2cbe8ce58839c982b9d.hot-update.js": "/chunks/oasis/invoices/create-invoice.d2cbe8ce58839c982b9d.hot-update.js",
"/chunks/oasis/invoices/create-invoice.279ac49a07287b29d2cf.hot-update.js": "/chunks/oasis/invoices/create-invoice.279ac49a07287b29d2cf.hot-update.js",
"/chunks/oasis/invoices/create-invoice.482e4cff79206d07edf1.hot-update.js": "/chunks/oasis/invoices/create-invoice.482e4cff79206d07edf1.hot-update.js",
"/chunks/oasis/invoices/create-invoice.03d98fd51456fc637a30.hot-update.js": "/chunks/oasis/invoices/create-invoice.03d98fd51456fc637a30.hot-update.js",
"/chunks/oasis/invoices/create-invoice.2894a5ee466b17d1234b.hot-update.js": "/chunks/oasis/invoices/create-invoice.2894a5ee466b17d1234b.hot-update.js",
"/chunks/oasis/invoices/create-invoice.2a0de71c8b320487afd1.hot-update.js": "/chunks/oasis/invoices/create-invoice.2a0de71c8b320487afd1.hot-update.js",
"/chunks/oasis/invoices/create-invoice.cbf489a83cf22e685f7c.hot-update.js": "/chunks/oasis/invoices/create-invoice.cbf489a83cf22e685f7c.hot-update.js",
"/chunks/oasis/invoices/create-invoice.5e9c8a6932ad21fd98b8.hot-update.js": "/chunks/oasis/invoices/create-invoice.5e9c8a6932ad21fd98b8.hot-update.js",
"/chunks/oasis/invoices/create-invoice.4056339805bc2fcb0814.hot-update.js": "/chunks/oasis/invoices/create-invoice.4056339805bc2fcb0814.hot-update.js",
"/chunks/oasis/invoices/create-invoice.4a782e5e6431091e7b7d.hot-update.js": "/chunks/oasis/invoices/create-invoice.4a782e5e6431091e7b7d.hot-update.js",
"/chunks/oasis/invoices/create-invoice.919da996ed767dc806c8.hot-update.js": "/chunks/oasis/invoices/create-invoice.919da996ed767dc806c8.hot-update.js",
"/chunks/oasis/invoices/create-invoice.f2783372014898e929a8.hot-update.js": "/chunks/oasis/invoices/create-invoice.f2783372014898e929a8.hot-update.js",
"/chunks/oasis/invoices/create-invoice.fde87c4bb7f4554a47d9.hot-update.js": "/chunks/oasis/invoices/create-invoice.fde87c4bb7f4554a47d9.hot-update.js",
"/chunks/oasis/invoices/create-invoice.50f75fc9769aecc1fb29.hot-update.js": "/chunks/oasis/invoices/create-invoice.50f75fc9769aecc1fb29.hot-update.js",
"/chunks/oasis/invoices/create-invoice.8f56747ce20f0b9d7956.hot-update.js": "/chunks/oasis/invoices/create-invoice.8f56747ce20f0b9d7956.hot-update.js",
"/chunks/oasis/invoices/create-invoice.3f6153328dc2ba36bcc1.hot-update.js": "/chunks/oasis/invoices/create-invoice.3f6153328dc2ba36bcc1.hot-update.js",
"/chunks/oasis/invoices/create-invoice.3bdd19e4193a8de87ad7.hot-update.js": "/chunks/oasis/invoices/create-invoice.3bdd19e4193a8de87ad7.hot-update.js",
"/chunks/oasis/invoices/create-invoice.db47f93f14bfc6f04685.hot-update.js": "/chunks/oasis/invoices/create-invoice.db47f93f14bfc6f04685.hot-update.js",
"/chunks/oasis/invoices/create-invoice.9956c96c2cda88f23bd2.hot-update.js": "/chunks/oasis/invoices/create-invoice.9956c96c2cda88f23bd2.hot-update.js",
"/chunks/oasis/invoices/create-invoice.4caf6e9d79c129da92da.hot-update.js": "/chunks/oasis/invoices/create-invoice.4caf6e9d79c129da92da.hot-update.js",
"/js/main.a5081e80b89d37b1116b.hot-update.js": "/js/main.a5081e80b89d37b1116b.hot-update.js",
"/chunks/oasis/invoices/create-invoice.6ed906a233d8a6d43d46.hot-update.js": "/chunks/oasis/invoices/create-invoice.6ed906a233d8a6d43d46.hot-update.js",
"/chunks/oasis/invoices/create-invoice.893de38e56ccda6a9180.hot-update.js": "/chunks/oasis/invoices/create-invoice.893de38e56ccda6a9180.hot-update.js",
"/chunks/oasis/invoices/create-invoice.f0016d27590db786f0b3.hot-update.js": "/chunks/oasis/invoices/create-invoice.f0016d27590db786f0b3.hot-update.js",
"/chunks/oasis/invoices/create-invoice.1473ee40a2a35b9dd2f4.hot-update.js": "/chunks/oasis/invoices/create-invoice.1473ee40a2a35b9dd2f4.hot-update.js",
"/chunks/oasis/invoices/create-invoice.c27a1232a6a26a349bf5.hot-update.js": "/chunks/oasis/invoices/create-invoice.c27a1232a6a26a349bf5.hot-update.js",
"/chunks/oasis/invoices/create-invoice.fdab71ae2a37e6b67b72.hot-update.js": "/chunks/oasis/invoices/create-invoice.fdab71ae2a37e6b67b72.hot-update.js",
"/chunks/oasis/invoices/create-invoice.65f83636e0b15f04c6d4.hot-update.js": "/chunks/oasis/invoices/create-invoice.65f83636e0b15f04c6d4.hot-update.js",
"/chunks/oasis/invoices/create-invoice.ae596a136746dd5286da.hot-update.js": "/chunks/oasis/invoices/create-invoice.ae596a136746dd5286da.hot-update.js",
"/chunks/oasis/invoices/create-invoice.f389c93ef6cabe4d1e91.hot-update.js": "/chunks/oasis/invoices/create-invoice.f389c93ef6cabe4d1e91.hot-update.js",
"/chunks/oasis/invoices/create-invoice.c00976946212f8d36ead.hot-update.js": "/chunks/oasis/invoices/create-invoice.c00976946212f8d36ead.hot-update.js",
"/chunks/oasis/invoices~chunks/platform~chunks/shared.3ffceeeff18e2ce02137.hot-update.js": "/chunks/oasis/invoices~chunks/platform~chunks/shared.3ffceeeff18e2ce02137.hot-update.js",
"/chunks/oasis/invoices~chunks/platform~chunks/shared.4b0bec00b34ee2363921.hot-update.js": "/chunks/oasis/invoices~chunks/platform~chunks/shared.4b0bec00b34ee2363921.hot-update.js",
"/chunks/oasis/invoices~chunks/platform~chunks/shared.3d4177546e680e5b6588.hot-update.js": "/chunks/oasis/invoices~chunks/platform~chunks/shared.3d4177546e680e5b6588.hot-update.js",
"/chunks/oasis/invoices/create-invoice.11bad75bf12b98b8ce07.hot-update.js": "/chunks/oasis/invoices/create-invoice.11bad75bf12b98b8ce07.hot-update.js"
}
@@ -15,7 +15,7 @@
<div class="block-wrapper">
<label>Invoice Number:</label>
<ValidationProvider tag="div" mode="passive" class="input-wrapper" name="invoice_number" rules="required" v-slot="{ errors }">
<input v-model.number="invoice.invoice_number" placeholder="" type="number" :class="{'is-error': errors[0]}" class="focus-border-theme" />
<input v-model.number="invoice.invoice_number" placeholder="Type invoice number..." type="number" :class="{'is-error': errors[0]}" class="focus-border-theme" />
<small v-if="latestInvoiceNumber" class="input-help">
Recommendation based on your latest invoice number {{ latestInvoiceNumber }}
</small>
@@ -26,7 +26,7 @@
<div class="block-wrapper">
<label>Variable Number:</label>
<ValidationProvider tag="div" mode="passive" class="input-wrapper" name="variable_number" rules="required" v-slot="{ errors }">
<input v-model.number="invoice.variable_number" placeholder="" type="number" :class="{'is-error': errors[0]}" class="focus-border-theme" />
<input v-model.number="invoice.variable_number" placeholder="Type variable number..." type="number" :class="{'is-error': errors[0]}" class="focus-border-theme" />
<small v-if="latestInvoiceNumber" class="input-help">
Recommendation based on your invoice number
</small>
@@ -36,8 +36,8 @@
<div class="block-wrapper">
<label>Delivery At:</label>
<ValidationProvider tag="div" mode="passive" class="input-wrapper" name="variable_number" rules="required" v-slot="{ errors }">
<input v-model="invoice.delivery_at" placeholder="" type="date" :class="{'is-error': errors[0]}" class="focus-border-theme" />
<ValidationProvider tag="div" mode="passive" class="input-wrapper" name="delivery_at" rules="required" v-slot="{ errors }">
<input v-model="invoice.delivery_at" type="date" :class="{'is-error': errors[0]}" class="focus-border-theme" />
<span class="error-message" v-if="errors[0]">{{ errors[0] }}</span>
</ValidationProvider>
</div>
@@ -49,7 +49,7 @@
<div class="block-wrapper">
<label>Client:</label>
<ValidationProvider tag="div" mode="passive" class="input-wrapper" name="invoice_type" rules="required" v-slot="{ errors }">
<ValidationProvider tag="div" mode="passive" class="input-wrapper" name="client" rules="required" v-slot="{ errors }">
<SelectInput v-model="invoice.client" :options="clients" placeholder="Create new or select existing client..." :isError="errors[0]" />
<span class="error-message" v-if="errors[0]">{{ errors[0] }}</span>
</ValidationProvider>
@@ -59,7 +59,7 @@
<div class="block-wrapper">
<label>ICO:</label>
<ValidationProvider tag="div" mode="passive" class="input-wrapper" name="client_ico" rules="required" v-slot="{ errors }">
<input v-model="invoice.client_ico" placeholder="" type="text" :class="{'is-error': errors[0]}" class="focus-border-theme" />
<input v-model="invoice.client_ico" placeholder="Type client ICO..." type="text" :class="{'is-error': errors[0]}" class="focus-border-theme" />
<span class="error-message" v-if="errors[0]">{{ errors[0] }}</span>
</ValidationProvider>
</div>
@@ -67,7 +67,7 @@
<div class="block-wrapper">
<label>DIC:</label>
<ValidationProvider tag="div" mode="passive" class="input-wrapper" name="client_dic" rules="required" v-slot="{ errors }">
<input v-model="invoice.client_dic" placeholder="" type="text" :class="{'is-error': errors[0]}" class="focus-border-theme" />
<input v-model="invoice.client_dic" placeholder="Type client DIC..." type="text" :class="{'is-error': errors[0]}" class="focus-border-theme" />
<span class="error-message" v-if="errors[0]">{{ errors[0] }}</span>
</ValidationProvider>
</div>
@@ -76,7 +76,7 @@
<div v-if="isNewClient" class="block-wrapper">
<label>IC DPH (optional):</label>
<ValidationProvider tag="div" mode="passive" class="input-wrapper" name="client_ic_dph" v-slot="{ errors }">
<input v-model="invoice.client_ic_dph" placeholder="" type="text" :class="{'is-error': errors[0]}" class="focus-border-theme" />
<input v-model="invoice.client_ic_dph" placeholder="Type client IC DHP..." type="text" :class="{'is-error': errors[0]}" class="focus-border-theme" />
<span class="error-message" v-if="errors[0]">{{ errors[0] }}</span>
</ValidationProvider>
</div>
@@ -84,7 +84,7 @@
<div v-if="isNewClient" class="block-wrapper">
<label>Company name:</label>
<ValidationProvider tag="div" mode="passive" class="input-wrapper" name="client_name" rules="required" v-slot="{ errors }">
<input v-model="invoice.client_name" placeholder="" type="text" :class="{'is-error': errors[0]}" class="focus-border-theme" />
<input v-model="invoice.client_name" placeholder="Type client company name..." type="text" :class="{'is-error': errors[0]}" class="focus-border-theme" />
<span class="error-message" v-if="errors[0]">{{ errors[0] }}</span>
</ValidationProvider>
</div>
@@ -92,7 +92,7 @@
<div v-if="isNewClient" class="block-wrapper">
<label>Address:</label>
<ValidationProvider tag="div" mode="passive" class="input-wrapper" name="client_address" rules="required" v-slot="{ errors }">
<input v-model="invoice.client_address" placeholder="" type="text" :class="{'is-error': errors[0]}" class="focus-border-theme" />
<input v-model="invoice.client_address" placeholder="Type client address..." type="text" :class="{'is-error': errors[0]}" class="focus-border-theme" />
<span class="error-message" v-if="errors[0]">{{ errors[0] }}</span>
</ValidationProvider>
</div>
@@ -101,7 +101,7 @@
<div class="block-wrapper">
<label>City:</label>
<ValidationProvider tag="div" mode="passive" class="input-wrapper" name="client_city" rules="required" v-slot="{ errors }">
<input v-model="invoice.client_city" placeholder="" type="text" :class="{'is-error': errors[0]}" class="focus-border-theme" />
<input v-model="invoice.client_city" placeholder="Type client city..." type="text" :class="{'is-error': errors[0]}" class="focus-border-theme" />
<span class="error-message" v-if="errors[0]">{{ errors[0] }}</span>
</ValidationProvider>
</div>
@@ -109,7 +109,7 @@
<div class="block-wrapper">
<label>Postal Code:</label>
<ValidationProvider tag="div" mode="passive" class="input-wrapper" name="client_postal_code" rules="required" v-slot="{ errors }">
<input v-model="invoice.client_postal_code" placeholder="" type="text" :class="{'is-error': errors[0]}" class="focus-border-theme" />
<input v-model="invoice.client_postal_code" placeholder="Type client postal code..." type="text" :class="{'is-error': errors[0]}" class="focus-border-theme" />
<span class="error-message" v-if="errors[0]">{{ errors[0] }}</span>
</ValidationProvider>
</div>
@@ -118,7 +118,7 @@
<div v-if="isNewClient" class="block-wrapper">
<label>Country:</label>
<ValidationProvider tag="div" mode="passive" class="input-wrapper" name="client_country" rules="required" v-slot="{ errors }">
<SelectInput v-model="invoice.client_country" :default="invoice.client_country" :options="countries" placeholder="" :isError="errors[0]" />
<SelectInput v-model="invoice.client_country" :default="invoice.client_country" :options="countries" placeholder="Select client country" :isError="errors[0]" />
<span class="error-message" v-if="errors[0]">{{ errors[0] }}</span>
</ValidationProvider>
</div>
@@ -126,7 +126,7 @@
<div v-if="isNewClient" class="block-wrapper">
<label>Phone (optional):</label>
<ValidationProvider tag="div" mode="passive" class="input-wrapper" name="client_phone_number" v-slot="{ errors }">
<input v-model="invoice.client_phone_number" placeholder="" type="text" :class="{'is-error': errors[0]}" class="focus-border-theme" />
<input v-model="invoice.client_phone_number" placeholder="Type client's phone number..." type="text" :class="{'is-error': errors[0]}" class="focus-border-theme" />
<span class="error-message" v-if="errors[0]">{{ errors[0] }}</span>
</ValidationProvider>
</div>
@@ -134,7 +134,7 @@
<div v-if="isNewClient" class="block-wrapper">
<label>Email (optional):</label>
<ValidationProvider tag="div" mode="passive" class="input-wrapper" name="client_email" v-slot="{ errors }">
<input v-model="invoice.client_email" placeholder="" type="email" :class="{'is-error': errors[0]}" class="focus-border-theme" />
<input v-model="invoice.client_email" placeholder="Type client's email address..." type="email" :class="{'is-error': errors[0]}" class="focus-border-theme" />
<span class="error-message" v-if="errors[0]">{{ errors[0] }}</span>
</ValidationProvider>
</div>
@@ -153,7 +153,7 @@
<div class="duplicator">
<div class="plan-item duplicator-item" v-for="(item, index) in invoice.items" :key="index++">
<x-icon @click="removeRow(item)" v-if="index !== 0" size="22" class="delete-item hover-text-theme" />
<x-icon @click="removeRow(item)" v-if="index !== 1" size="22" class="delete-item hover-text-theme" />
<div class="block-wrapper">
<label>Description:</label>
@@ -190,7 +190,7 @@
</div>
</div>
<ButtonBase @click.native="addRow" class="duplicator-add-button" button-style="theme" style="width: 100%">
<ButtonBase @click.native="addRow" class="duplicator-add-button" button-style="theme">
Add New Item
</ButtonBase>
</div>
@@ -201,7 +201,7 @@
<FormLabel icon="credit-card">Discount</FormLabel>
<div class="block-wrapper">
<ValidationProvider tag="div" mode="passive" class="input-wrapper" name="email" v-slot="{ errors }">
<div class="input-wrapper">
<div class="inline-wrapper">
<div class="switch-label">
<label class="input-label">Apply discount:</label>
@@ -209,13 +209,13 @@
</div>
<SwitchInput v-model="isDiscount" class="switch" :state="isDiscount" />
</div>
</ValidationProvider>
</div>
</div>
<div v-if="isDiscount" class="block-wrapper">
<label>Discount Type:</label>
<ValidationProvider tag="div" mode="passive" class="input-wrapper" name="discount_type" rules="required" v-slot="{ errors }">
<SelectInput v-model="invoice.discount_type" :default="invoice.discount_type" :options="discountTypeList" placeholder="" :isError="errors[0]" />
<SelectInput v-model="invoice.discount_type" :default="invoice.discount_type" :options="discountTypeList" placeholder="Select discount type" :isError="errors[0]" />
<span class="error-message" v-if="errors[0]">{{ errors[0] }}</span>
</ValidationProvider>
</div>
@@ -223,7 +223,7 @@
<div v-if="isDiscount" class="block-wrapper">
<label>Discount Rate:</label>
<ValidationProvider tag="div" mode="passive" class="input-wrapper" name="discount_rate" rules="required" v-slot="{ errors }">
<input v-model.number="invoice.discount_rate" placeholder="" max="100" min="0" type="number" :class="{'is-error': errors[0]}" class="focus-border-theme" />
<input v-model.number="invoice.discount_rate" placeholder="Type discount rate..." max="100" min="0" type="number" :class="{'is-error': errors[0]}" class="focus-border-theme" />
<span class="error-message" v-if="errors[0]">{{ errors[0] }}</span>
</ValidationProvider>
</div>
@@ -234,7 +234,7 @@
<FormLabel icon="settings">Others</FormLabel>
<div v-if="isNewClient && invoice.client_email" class="block-wrapper">
<ValidationProvider tag="div" mode="passive" class="input-wrapper" name="email" v-slot="{ errors }">
<div class="input-wrapper">
<div class="inline-wrapper">
<div class="switch-label">
<label class="input-label">Store client for future use:</label>
@@ -242,11 +242,11 @@
</div>
<SwitchInput v-model="invoice.send_invoice" class="switch" :state="invoice.send_invoice" />
</div>
</ValidationProvider>
</div>
</div>
<div class="block-wrapper">
<ValidationProvider tag="div" mode="passive" class="input-wrapper" name="email" v-slot="{ errors }">
<div class="input-wrapper">
<div class="inline-wrapper">
<div class="switch-label">
<label class="input-label">Send invoice on client's email:</label>
@@ -254,7 +254,7 @@
</div>
<SwitchInput v-model="invoice.send_invoice" class="switch" :state="invoice.send_invoice" />
</div>
</ValidationProvider>
</div>
</div>
</PageTabGroup>
</PageTab>
@@ -511,22 +511,22 @@
isVatPayer: false,
clients: [],
latestInvoiceNumber: undefined,
_invoice: {
invoice: {
invoice_type: '',
invoice_number: '',
variable_number: '',
delivery_at: '',
items: [
{
id: 1,
id: Math.floor(Math.random() * 10000000),
description: '',
amount: 1,
tax_rate: undefined,
tax_rate: 21,
price: undefined,
}
],
discount_type: null,
discount_rate: null,
discount_type: undefined,
discount_rate: undefined,
client: '',
client_avatar: '',
client_name: '',
@@ -542,7 +542,7 @@
send_invoice: true,
store_client: true,
},
invoice: {
/*invoice: {
invoice_type: 'regular-invoice',
invoice_number: undefined,
variable_number: undefined,
@@ -564,7 +564,7 @@
client_ic_dph: 'SK2023489457',
send_invoice: false,
store_client: true,
},
},*/
invoiceTypeList: [
{
label: 'Regular Invoice',
@@ -605,6 +605,7 @@
if (!isValid) {
this.isError = true
this.errorMessage = 'There is probably an error, please check it and fix it.'
return
}
@@ -620,7 +621,8 @@
if (key === 'items') {
formData.append(key, JSON.stringify(this.invoice[key]))
} else {
formData.append(key, this.invoice[key])
if (this.invoice[key])
formData.append(key, this.invoice[key])
}
})
@@ -677,7 +679,7 @@
id: Math.floor(Math.random() * 10000000),
description: '',
amount: 1,
tax_rate: lastTaxRate?.tax_rate || 20,
tax_rate: lastTaxRate?.tax_rate || 21,
price: 1,
})
@@ -685,8 +687,19 @@
},
removeRow(item) {
this.invoice.items = this.invoice.items.filter(obj => obj.id !== item.id)
if (this.invoice.items.length > 1)
this.invoice.items = this.invoice.items.filter(obj => obj.id !== item.id)
},
get_recommended_delivery_date() {
let now = new Date(),
delivery_time = now.setDate(now.getDate() + 2 * 7)
let year = new Intl.DateTimeFormat('en', {year: 'numeric'}).format(delivery_time),
month = new Intl.DateTimeFormat('en', {month: '2-digit'}).format(delivery_time),
day = new Intl.DateTimeFormat('en', {day: 'numeric'}).format(delivery_time)
this.invoice.delivery_at = `${year}-${month}-${day}`
}
},
mounted() {
this.invoice.invoice_type = this.$route.query.type
@@ -703,6 +716,8 @@
this.invoice.invoice_number = response.data.recommendedInvoiceNumber
this.latestInvoiceNumber = response.data.latestInvoiceNumber
this.get_recommended_delivery_date()
})
.finally(() => {
this.isLoadingPage = false
@@ -734,6 +749,7 @@
.summary-list {
box-shadow: 0 7px 20px 5px hsla(220, 36%, 16%, 0.06);
border-radius: 8px;
min-width: 300px;
position: sticky;
padding: 25px;
top: 85px;
@@ -806,6 +822,13 @@
}
}
.duplicator {
.wrapper-inline {
margin-bottom: 0 !important;
}
}
@media only screen and (max-width: 970px) {
.content-page {
grid-template-columns: 1fr;
@@ -251,10 +251,12 @@ export default {
}
#pdf-wrapper {
overflow-y: scroll;
border-radius: 8px;
box-shadow: $light_mode_popup_shadow;
overflow-y: scroll;
margin: 0 auto;
position: absolute;
top: 0;
top: 20px;
left: 0;
right: 0;
bottom: 0;
+2 -2
View File
@@ -65,7 +65,7 @@
.duplicator {
.duplicator-add-button {
//width: 100%;
width: 100%;
}
.duplicator-item {
@@ -109,7 +109,7 @@
border-radius: 0;
padding: 0 0 8px;
&:focus {
&:focus, &.is-error {
border-top-color: transparent !important;
border-left-color: transparent !important;
border-right-color: transparent !important;
@@ -61,7 +61,7 @@
<!--Supplier-->
<section>
<div class="supplier">
<div class="box">
<div class="box" style="width: 500px;">
<h3>Odberateľ:</h3>
<p>{{ $invoice->client['name'] }}</p>
<p>{{ $invoice->client['address'] }}, {{ $invoice->client['city'] }}</p>