From e3240fa43bde4a57841de8d0e6dee985d4975600 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=BCneyt=20=C5=9Eent=C3=BCrk?= Date: Mon, 20 Apr 2020 03:42:13 +0300 Subject: [PATCH] refs #1408 Fixed invoice total discount feature.. --- app/Jobs/Sale/CreateInvoice.php | 5 ++++ app/Jobs/Sale/CreateInvoiceItem.php | 7 +++++- app/Jobs/Sale/UpdateInvoice.php | 5 ++++ app/Models/Sale/InvoiceItem.php | 25 +++++++++++++++++++ resources/assets/js/views/sales/invoices.js | 2 +- .../views/sales/invoices/create.blade.php | 2 +- resources/views/sales/invoices/edit.blade.php | 2 +- 7 files changed, 44 insertions(+), 4 deletions(-) diff --git a/app/Jobs/Sale/CreateInvoice.php b/app/Jobs/Sale/CreateInvoice.php index 4ceb98812..c22608fc5 100644 --- a/app/Jobs/Sale/CreateInvoice.php +++ b/app/Jobs/Sale/CreateInvoice.php @@ -179,6 +179,11 @@ class CreateInvoice extends Job } foreach ((array) $this->request['items'] as $item) { + $item['global_discount'] = 0; + + if (!empty($this->request['discount'])) { + $item['global_discount'] = $this->request['discount']; + } $invoice_item = $this->dispatch(new CreateInvoiceItem($item, $this->invoice)); diff --git a/app/Jobs/Sale/CreateInvoiceItem.php b/app/Jobs/Sale/CreateInvoiceItem.php index 78ba82747..38f2a4948 100644 --- a/app/Jobs/Sale/CreateInvoiceItem.php +++ b/app/Jobs/Sale/CreateInvoiceItem.php @@ -38,11 +38,16 @@ class CreateInvoiceItem extends Job $item_discounted_amount = $item_amount; - // Apply discount to amount + // Apply line discount to amount if (!empty($this->request['discount'])) { $item_discounted_amount = $item_amount -= ($item_amount * ($this->request['discount'] / 100)); } + // Apply global discount to amount + if (!empty($this->request['global_discount'])) { + $item_discounted_amount = $item_amount - ($item_amount * ($this->request['global_discount'] / 100)); + } + $tax_amount = 0; $item_taxes = []; $item_tax_total = 0; diff --git a/app/Jobs/Sale/UpdateInvoice.php b/app/Jobs/Sale/UpdateInvoice.php index 66a1d1258..86c52d051 100644 --- a/app/Jobs/Sale/UpdateInvoice.php +++ b/app/Jobs/Sale/UpdateInvoice.php @@ -193,6 +193,11 @@ class UpdateInvoice extends Job $this->deleteRelationships($this->invoice, ['items', 'item_taxes']); foreach ((array) $this->request['items'] as $item) { + $item['global_discount'] = 0; + + if (!empty($this->request['discount'])) { + $item['global_discount'] = $this->request['discount']; + } $invoice_item = $this->dispatch(new CreateInvoiceItem($item, $this->invoice)); diff --git a/app/Models/Sale/InvoiceItem.php b/app/Models/Sale/InvoiceItem.php index 10c3ddab1..22e0036ca 100644 --- a/app/Models/Sale/InvoiceItem.php +++ b/app/Models/Sale/InvoiceItem.php @@ -117,6 +117,31 @@ class InvoiceItem extends Model return $text; } + /** + * Get the formatted discount. + * + * @return string + */ + public function getDiscountRateAttribute($value = 0) + { + $discount_rate = 0; + + switch (setting('localisation.discount_location', 'total')) { + case 'no': + case 'total': + $discount_rate = 0; + break; + case 'item': + $discount_rate = $value; + break; + case 'both': + $discount_rate = $value; + break; + } + + return $discount_rate; + } + /** * Convert tax to Array. * diff --git a/resources/assets/js/views/sales/invoices.js b/resources/assets/js/views/sales/invoices.js index 175ee6644..84c4790ad 100644 --- a/resources/assets/js/views/sales/invoices.js +++ b/resources/assets/js/views/sales/invoices.js @@ -83,7 +83,7 @@ const app = new Vue({ price: (item.price).toFixed(2), quantity: item.quantity, tax_id: item.tax_id, - discount: (typeof item_backup.discount !== 'undefined') ? item.discount_rate : 0, + discount: item.discount_rate, total: (item.total).toFixed(2) }); }); diff --git a/resources/views/sales/invoices/create.blade.php b/resources/views/sales/invoices/create.blade.php index 5d3212b6e..cfb1b9972 100644 --- a/resources/views/sales/invoices/create.blade.php +++ b/resources/views/sales/invoices/create.blade.php @@ -127,7 +127,7 @@ - {!! Form::number('pre_discount', null, ['id' => 'pre-discount', 'class' => 'form-control']) !!} + {!! Form::number('pre_discount', null, ['id' => 'pre-discount', 'class' => 'form-control', 'v-model' => 'form.discount']) !!}
diff --git a/resources/views/sales/invoices/edit.blade.php b/resources/views/sales/invoices/edit.blade.php index 915df27a7..a767627b6 100644 --- a/resources/views/sales/invoices/edit.blade.php +++ b/resources/views/sales/invoices/edit.blade.php @@ -128,7 +128,7 @@
- {!! Form::number('pre_discount', null, ['id' => 'pre-discount', 'class' => 'form-control']) !!} + {!! Form::number('pre_discount', null, ['id' => 'pre-discount', 'class' => 'form-control', 'v-model' => 'form.discount']) !!}