From b135f0a57b87a6ff1b4bf07cf2d2b01dfa37be04 Mon Sep 17 00:00:00 2001 From: sausin Date: Sun, 3 Feb 2019 21:01:08 +0530 Subject: [PATCH] Closes #688 The additional point about restricting the types of taxes is not covered here. --- app/Jobs/Expense/CreateBillItem.php | 56 ++++++++--------------------- 1 file changed, 14 insertions(+), 42 deletions(-) diff --git a/app/Jobs/Expense/CreateBillItem.php b/app/Jobs/Expense/CreateBillItem.php index b1d7af6d3..d66446384 100644 --- a/app/Jobs/Expense/CreateBillItem.php +++ b/app/Jobs/Expense/CreateBillItem.php @@ -103,51 +103,23 @@ class CreateBillItem } if ($inclusives) { - if ($this->discount) { - $item_tax_total = 0; + $item_amount = $item_discount_amount + $item_tax_total; - if ($taxes) { - foreach ($taxes as $tax) { - $item_tax_amount = ($item_amount / 100) * $tax->rate; + $item_base_rate = $item_amount / (1 + collect($inclusives)->sum('rate')/100); + + foreach ($inclusives as $inclusive) { + $item_tax_total += $tax_amount = $item_base_rate * ($inclusive->rate / 100); - $item_tax_total += $item_tax_amount; - } - } - - foreach ($inclusives as $inclusive) { - $item_sub_and_tax_total = $item_amount + $item_tax_total; - - $item_tax_total = $item_sub_and_tax_total - ($item_sub_and_tax_total / (1 + ($inclusive->rate / 100))); - - $item_sub_total = $item_sub_and_tax_total - $item_tax_total; - - $item_taxes[] = [ - 'company_id' => $this->bill->company_id, - 'bill_id' => $this->bill->id, - 'tax_id' => $inclusive->id, - 'name' => $inclusive->name, - 'amount' => $tax_amount, - ]; - - $item_discount_amount = $item_sub_total - ($item_sub_total * ($this->discount / 100)); - } - } else { - foreach ($inclusives as $inclusive) { - $item_sub_and_tax_total = $item_discount_amount + $item_tax_total; - - $item_tax_total = $tax_amount = $item_sub_and_tax_total - ($item_sub_and_tax_total / (1 + ($inclusive->rate / 100))); - - $item_taxes[] = [ - 'company_id' => $this->bill->company_id, - 'bill_id' => $this->bill->id, - 'tax_id' => $inclusive->id, - 'name' => $inclusive->name, - 'amount' => $tax_amount, - ]; - - $item_amount = $item_sub_and_tax_total - $item_tax_total; - } + $item_taxes[] = [ + 'company_id' => $this->bill->company_id, + 'bill_id' => $this->bill->id, + 'tax_id' => $inclusive->id, + 'name' => $inclusive->name, + 'amount' => $tax_amount, + ]; } + + $item_amount = ($item_amount - $item_tax_total) / (1 - $this->discount / 100); } if ($compounds) {