diff --git a/app/Jobs/Purchase/CreateBill.php b/app/Jobs/Purchase/CreateBill.php index 7d8ec7406..a75356ab8 100644 --- a/app/Jobs/Purchase/CreateBill.php +++ b/app/Jobs/Purchase/CreateBill.php @@ -179,6 +179,11 @@ class CreateBill extends Job } foreach ((array) $this->request['items'] as $item) { + $item['global_discount'] = 0; + + if (!empty($this->request['discount'])) { + $item['global_discount'] = $this->request['discount']; + } $bill_item = $this->dispatch(new CreateBillItem($item, $this->bill)); diff --git a/app/Jobs/Purchase/CreateBillItem.php b/app/Jobs/Purchase/CreateBillItem.php index a6071e824..e2a1b47a6 100644 --- a/app/Jobs/Purchase/CreateBillItem.php +++ b/app/Jobs/Purchase/CreateBillItem.php @@ -38,11 +38,16 @@ class CreateBillItem 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/Purchase/UpdateBill.php b/app/Jobs/Purchase/UpdateBill.php index 9c20c8746..fbee067b2 100644 --- a/app/Jobs/Purchase/UpdateBill.php +++ b/app/Jobs/Purchase/UpdateBill.php @@ -193,6 +193,11 @@ class UpdateBill extends Job $this->deleteRelationships($this->bill, ['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']; + } $bill_item = $this->dispatch(new CreateBillItem($item, $this->bill)); diff --git a/app/Models/Purchase/BillItem.php b/app/Models/Purchase/BillItem.php index 34e5710c8..7d5da1d46 100644 --- a/app/Models/Purchase/BillItem.php +++ b/app/Models/Purchase/BillItem.php @@ -118,6 +118,31 @@ class BillItem 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/purchases/bills.js b/resources/assets/js/views/purchases/bills.js index 3a1f4ebfe..8035a9261 100644 --- a/resources/assets/js/views/purchases/bills.js +++ b/resources/assets/js/views/purchases/bills.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/purchases/bills/create.blade.php b/resources/views/purchases/bills/create.blade.php index 3840b6274..2ca53b164 100644 --- a/resources/views/purchases/bills/create.blade.php +++ b/resources/views/purchases/bills/create.blade.php @@ -127,8 +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']) !!}