Add "Item Discount" line in totals
This commit is contained in:
@ -27,18 +27,12 @@ class Defaults extends Controller
|
||||
|
||||
$payment_methods = Modules::getPaymentMethods();
|
||||
|
||||
$discount_locations = [
|
||||
'in_totals' => trans('settings.default.discount_in_totals'),
|
||||
'per_item' => trans('settings.default.discount_per_item'),
|
||||
];
|
||||
|
||||
return view('settings.default.edit', compact(
|
||||
'setting',
|
||||
'accounts',
|
||||
'currencies',
|
||||
'taxes',
|
||||
'payment_methods',
|
||||
'discount_locations'
|
||||
'payment_methods'
|
||||
));
|
||||
}
|
||||
}
|
||||
|
@ -64,7 +64,7 @@ class CreateBill extends Job
|
||||
protected function createItemsAndTotals()
|
||||
{
|
||||
// Create items
|
||||
list($sub_total, $taxes) = $this->createItems();
|
||||
list($sub_total, $discount_amount_total, $taxes) = $this->createItems();
|
||||
|
||||
$sort_order = 1;
|
||||
|
||||
@ -83,8 +83,23 @@ class CreateBill extends Job
|
||||
$sort_order++;
|
||||
|
||||
// Add discount
|
||||
if ($discount_amount_total > 0) {
|
||||
BillTotal::create([
|
||||
'company_id' => $this->bill->company_id,
|
||||
'bill_id' => $this->bill->id,
|
||||
'code' => 'item_discount',
|
||||
'name' => 'bills.item_discount',
|
||||
'amount' => $discount_amount_total,
|
||||
'sort_order' => $sort_order,
|
||||
]);
|
||||
|
||||
$this->request['amount'] -= $discount_amount_total;
|
||||
|
||||
$sort_order++;
|
||||
}
|
||||
|
||||
if (!empty($this->request['discount'])) {
|
||||
$discount_total = $sub_total * ($this->request['discount'] / 100);
|
||||
$discount_total = ($sub_total - $discount_amount_total) * ($this->request['discount'] / 100);
|
||||
|
||||
BillTotal::create([
|
||||
'company_id' => $this->bill->company_id,
|
||||
@ -155,7 +170,7 @@ class CreateBill extends Job
|
||||
|
||||
protected function createItems()
|
||||
{
|
||||
$sub_total = 0;
|
||||
$sub_total = $discount_amount = $discount_amount_total = 0;
|
||||
|
||||
$taxes = [];
|
||||
|
||||
@ -170,8 +185,14 @@ class CreateBill extends Job
|
||||
|
||||
$bill_item = $this->dispatch(new CreateBillItem($item, $this->bill));
|
||||
|
||||
$item_amount = (double) $item['price'] * (double) $item['quantity'];
|
||||
|
||||
$discount_amount = ($item_amount * ($item['discount'] / 100));
|
||||
|
||||
// Calculate totals
|
||||
$sub_total += $bill_item->total;
|
||||
$sub_total += $bill_item->total + $discount_amount;
|
||||
|
||||
$discount_amount_total += $discount_amount;
|
||||
|
||||
if (!$bill_item->item_taxes) {
|
||||
continue;
|
||||
@ -190,6 +211,6 @@ class CreateBill extends Job
|
||||
}
|
||||
}
|
||||
|
||||
return [$sub_total, $taxes];
|
||||
return [$sub_total, $discount_amount_total, $taxes];
|
||||
}
|
||||
}
|
||||
|
@ -72,7 +72,7 @@ class UpdateBill extends Job
|
||||
protected function createItemsAndTotals()
|
||||
{
|
||||
// Create items
|
||||
list($sub_total, $taxes) = $this->createItems();
|
||||
list($sub_total, $discount_amount_total, $taxes) = $this->createItems();
|
||||
|
||||
// Delete current totals
|
||||
$this->deleteRelationships($this->bill, 'totals');
|
||||
@ -94,8 +94,23 @@ class UpdateBill extends Job
|
||||
$sort_order++;
|
||||
|
||||
// Add discount
|
||||
if ($discount_amount_total > 0) {
|
||||
BillTotal::create([
|
||||
'company_id' => $this->bill->company_id,
|
||||
'bill_id' => $this->bill->id,
|
||||
'code' => 'item_discount',
|
||||
'name' => 'bills.item_discount',
|
||||
'amount' => $discount_amount_total,
|
||||
'sort_order' => $sort_order,
|
||||
]);
|
||||
|
||||
$this->request['amount'] -= $discount_amount_total;
|
||||
|
||||
$sort_order++;
|
||||
}
|
||||
|
||||
if (!empty($this->request['discount'])) {
|
||||
$discount_total = $sub_total * ($this->request['discount'] / 100);
|
||||
$discount_total = ($sub_total - $discount_amount_total) * ($this->request['discount'] / 100);
|
||||
|
||||
BillTotal::create([
|
||||
'company_id' => $this->bill->company_id,
|
||||
@ -166,7 +181,7 @@ class UpdateBill extends Job
|
||||
|
||||
protected function createItems()
|
||||
{
|
||||
$sub_total = 0;
|
||||
$sub_total = $discount_amount = $discount_amount_total = 0;
|
||||
|
||||
$taxes = [];
|
||||
|
||||
@ -184,8 +199,14 @@ class UpdateBill extends Job
|
||||
|
||||
$bill_item = $this->dispatch(new CreateBillItem($item, $this->bill));
|
||||
|
||||
$item_amount = (double) $item['price'] * (double) $item['quantity'];
|
||||
|
||||
$discount_amount = ($item_amount * ($item['discount'] / 100));
|
||||
|
||||
// Calculate totals
|
||||
$sub_total += $bill_item->total;
|
||||
$sub_total += $bill_item->total + $discount_amount;
|
||||
|
||||
$discount_amount_total += $discount_amount;
|
||||
|
||||
if (!$bill_item->item_taxes) {
|
||||
continue;
|
||||
@ -204,6 +225,6 @@ class UpdateBill extends Job
|
||||
}
|
||||
}
|
||||
|
||||
return [$sub_total, $taxes];
|
||||
return [$sub_total, $discount_amount_total, $taxes];
|
||||
}
|
||||
}
|
||||
|
@ -64,7 +64,7 @@ class CreateInvoice extends Job
|
||||
protected function createItemsAndTotals()
|
||||
{
|
||||
// Create items
|
||||
list($sub_total, $taxes) = $this->createItems();
|
||||
list($sub_total, $discount_amount_total, $taxes) = $this->createItems();
|
||||
|
||||
$sort_order = 1;
|
||||
|
||||
@ -83,8 +83,23 @@ class CreateInvoice extends Job
|
||||
$sort_order++;
|
||||
|
||||
// Add discount
|
||||
if ($discount_amount_total > 0) {
|
||||
InvoiceTotal::create([
|
||||
'company_id' => $this->invoice->company_id,
|
||||
'invoice_id' => $this->invoice->id,
|
||||
'code' => 'item_discount',
|
||||
'name' => 'invoices.item_discount',
|
||||
'amount' => $discount_amount_total,
|
||||
'sort_order' => $sort_order,
|
||||
]);
|
||||
|
||||
$this->request['amount'] -= $discount_amount_total;
|
||||
|
||||
$sort_order++;
|
||||
}
|
||||
|
||||
if (!empty($this->request['discount'])) {
|
||||
$discount_total = $sub_total * ($this->request['discount'] / 100);
|
||||
$discount_total = ($sub_total - $discount_amount_total) * ($this->request['discount'] / 100);
|
||||
|
||||
InvoiceTotal::create([
|
||||
'company_id' => $this->invoice->company_id,
|
||||
@ -155,7 +170,7 @@ class CreateInvoice extends Job
|
||||
|
||||
protected function createItems()
|
||||
{
|
||||
$sub_total = 0;
|
||||
$sub_total = $discount_amount = $discount_amount_total = 0;
|
||||
|
||||
$taxes = [];
|
||||
|
||||
@ -170,8 +185,14 @@ class CreateInvoice extends Job
|
||||
|
||||
$invoice_item = $this->dispatch(new CreateInvoiceItem($item, $this->invoice));
|
||||
|
||||
$item_amount = (double) $item['price'] * (double) $item['quantity'];
|
||||
|
||||
$discount_amount = ($item_amount * ($item['discount'] / 100));
|
||||
|
||||
// Calculate totals
|
||||
$sub_total += $invoice_item->total;
|
||||
$sub_total += $invoice_item->total + $discount_amount;
|
||||
|
||||
$discount_amount_total += $discount_amount;
|
||||
|
||||
if (!$invoice_item->item_taxes) {
|
||||
continue;
|
||||
@ -190,6 +211,6 @@ class CreateInvoice extends Job
|
||||
}
|
||||
}
|
||||
|
||||
return [$sub_total, $taxes];
|
||||
return [$sub_total, $discount_amount_total, $taxes];
|
||||
}
|
||||
}
|
||||
|
@ -72,7 +72,7 @@ class UpdateInvoice extends Job
|
||||
protected function createItemsAndTotals()
|
||||
{
|
||||
// Create items
|
||||
list($sub_total, $taxes) = $this->createItems();
|
||||
list($sub_total, $discount_amount_total, $taxes) = $this->createItems();
|
||||
|
||||
// Delete current totals
|
||||
$this->deleteRelationships($this->invoice, 'totals');
|
||||
@ -94,8 +94,23 @@ class UpdateInvoice extends Job
|
||||
$sort_order++;
|
||||
|
||||
// Add discount
|
||||
if ($discount_amount_total > 0) {
|
||||
InvoiceTotal::create([
|
||||
'company_id' => $this->invoice->company_id,
|
||||
'invoice_id' => $this->invoice->id,
|
||||
'code' => 'item_discount',
|
||||
'name' => 'invoices.item_discount',
|
||||
'amount' => $discount_amount_total,
|
||||
'sort_order' => $sort_order,
|
||||
]);
|
||||
|
||||
$this->request['amount'] -= $discount_amount_total;
|
||||
|
||||
$sort_order++;
|
||||
}
|
||||
|
||||
if (!empty($this->request['discount'])) {
|
||||
$discount_total = $sub_total * ($this->request['discount'] / 100);
|
||||
$discount_total = ($sub_total - $discount_amount_total) * ($this->request['discount'] / 100);
|
||||
|
||||
InvoiceTotal::create([
|
||||
'company_id' => $this->invoice->company_id,
|
||||
@ -166,7 +181,7 @@ class UpdateInvoice extends Job
|
||||
|
||||
protected function createItems()
|
||||
{
|
||||
$sub_total = 0;
|
||||
$sub_total = $discount_amount = $discount_amount_total = 0;
|
||||
|
||||
$taxes = [];
|
||||
|
||||
@ -184,8 +199,14 @@ class UpdateInvoice extends Job
|
||||
|
||||
$invoice_item = $this->dispatch(new CreateInvoiceItem($item, $this->invoice));
|
||||
|
||||
$item_amount = (double) $item['price'] * (double) $item['quantity'];
|
||||
|
||||
$discount_amount = ($item_amount * ($item['discount'] / 100));
|
||||
|
||||
// Calculate totals
|
||||
$sub_total += $invoice_item->total;
|
||||
$sub_total += $invoice_item->total + $discount_amount;
|
||||
|
||||
$discount_amount_total += $discount_amount;
|
||||
|
||||
if (!$invoice_item->item_taxes) {
|
||||
continue;
|
||||
@ -204,6 +225,6 @@ class UpdateInvoice extends Job
|
||||
}
|
||||
}
|
||||
|
||||
return [$sub_total, $taxes];
|
||||
return [$sub_total, $discount_amount_total, $taxes];
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user