From 8d878324810bcc3c47cc8e23cd4894303374fbbe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Burak=20=C3=87ak=C4=B1rel?= Date: Wed, 11 Aug 2021 15:22:19 +0100 Subject: [PATCH 1/4] Adding discount as an amount #kbcqjv --- resources/assets/js/views/common/documents.js | 45 ++++++++++++++++--- .../documents/form/line-item.blade.php | 18 +++++--- .../documents/form/totals.blade.php | 17 ++++--- 3 files changed, 60 insertions(+), 20 deletions(-) diff --git a/resources/assets/js/views/common/documents.js b/resources/assets/js/views/common/documents.js index 6137007ce..bb57615a0 100644 --- a/resources/assets/js/views/common/documents.js +++ b/resources/assets/js/views/common/documents.js @@ -116,7 +116,12 @@ const app = new Vue({ let line_discount_amount = 0; if (item.discount) { - line_discount_amount = item.total * (item.discount / 100); + if (item.discount_type === 'percentage') { + line_discount_amount = item.total * (item.discount / 100); + } else { + line_discount_amount = item.discount; + } + item.discount_amount = line_discount_amount item_discounted_total = item.total -= line_discount_amount; @@ -126,7 +131,11 @@ const app = new Vue({ let item_discounted_total = item.total; if (global_discount) { - item_discounted_total = item.total - (item.total * (global_discount / 100)); + if (this.form.discount_type === 'percentage') { + item_discounted_total = item.total - (item.total * (global_discount / 100)); + } else { + item_discounted_total = item.total - global_discount; + } item_discount = global_discount; } @@ -241,7 +250,11 @@ const app = new Vue({ // Apply discount to total if (global_discount) { - discount_total = parseFloat(sub_total + inclusive_tax_total) * (global_discount / 100); + if (this.form.discount_type === 'percentage') { + discount_total = parseFloat(sub_total + inclusive_tax_total) * (global_discount / 100); + } else { + discount_total = global_discount; + } this.totals.discount = discount_total; @@ -389,13 +402,31 @@ const app = new Vue({ this.items[item_index].add_discount = true; }, + onChangeDiscountType(type) { + this.form.discount_type = type; + this.onCalculateTotal(); + }, + + onChangeLineDiscountType(item_index, type) { + this.items[item_index].discount_type = type; + this.onCalculateTotal(); + }, + onAddTotalDiscount() { let discount = document.getElementById('pre-discount').value; - if (discount < 0) { - discount = 0; - } else if (discount > 100) { - discount = 100; + if (this.form.discount_type === 'percentage') { + if (discount < 0) { + discount = 0; + } else if (discount > 100) { + discount = 100; + } + } else { + if (discount < 0) { + discount = 0; + } else if (discount > this.totals.sub) { + discount = this.totals.sub; + } } document.getElementById('pre-discount').value = discount; diff --git a/resources/views/components/documents/form/line-item.blade.php b/resources/views/components/documents/form/line-item.blade.php index 7bc75000f..9599d6ca0 100644 --- a/resources/views/components/documents/form/line-item.blade.php +++ b/resources/views/components/documents/form/line-item.blade.php @@ -76,7 +76,7 @@ @if (!$hideQuantity)
@stack('quantity_input_start') - @stack('discount_input_start')
-
+
- - - + +
@stack('taxes_input_end')
- +
{{ Form::moneyGroup('tax', '', '', ['required' => 'required', 'disabled' => 'true' , 'row-input' => 'true', 'v-model' => 'row_tax.price', 'data-item' => 'total', 'currency' => $currency, 'dynamic-currency' => 'currency'], 0.00, 'text-right input-price disabled-money') }} @@ -242,7 +246,7 @@
- {{ trans_choice('general.taxes', 1) }} + {{ trans_choice('general.taxes', 1) }}
@stack('taxes_input_start') diff --git a/resources/views/components/documents/form/totals.blade.php b/resources/views/components/documents/form/totals.blade.php index 45b2b2e20..8ad21880b 100644 --- a/resources/views/components/documents/form/totals.blade.php +++ b/resources/views/components/documents/form/totals.blade.php @@ -54,22 +54,27 @@
-
-
+
+
- - - + +
{!! Form::number('pre_discount', null, ['id' => 'pre-discount', 'class' => 'form-control', 'v-model' => 'form.discount']) !!}
-
+
{{ trans('invoices.discount_desc') }}
+