I am working with some code which will apply a discount to an item should the item be bought in multiples that are dividable by 2, this works if I put in any number dividable by 2.
The problem is if the user inputs say 3, I would still like the discount to be applied as they have bought 2 together plus another.
What would be the best approach to tackling this? This is the code I'm working with:
if($price == 11.99 && $each_item['quantity'] % 2 == 0)
{
$toAdd = 3.98 * ($each_item['quantity'] / 2);
$discount += $toAdd;
$priceTotal = $price * $each_item['quantity'];
$priceTotal -= $discount;
$finalDiscount += $discount;
}
Divide the quantity by 2, and round it down to an integer to get the number of discounts to apply.
if ($price == 11.99) {
$to_add = 3.98 * floor($each_item['quanity']/2);
$discount += $toAdd;
$priceTotal = $price * $each_item['quantity'];
$priceTotal -= $discount;
$finalDiscount += $discount;
}
Related
I'm having trouble calculating the discount of total order amount of products that is multiplied by 100.
In my database I'm saving the product price multiplied by 100 e.g.: $price = 33.5 * 100 I'm doing this to prevent wrong calculation of the decimal point .5 when retrieving the data and adding those to other products.
So I have this for now
$test_product_price = 10000 // actual price is 100 because it's save multiplied by 100
$quantity = 3;
$discount = 10.5%;
$order_amount = $test_product_price * 3 // will produce 30000 but actual price is 300 when divided by 100
Now what I want is deduct the $discount which is 10.5%
for actual amount this is working fine
$discounted_amount = 300 - (300 * (10.5 / 100)); // will produce 268.5
but how can I do that on my end that is my amounts are multiplied by 100
Possibly a bit long winded but accurate;
<?php
$amount = 100;
$number = 3;
$percent = 10.5;
$subtotal = $amount * $number;
$discount = ($percent / 100) * $subtotal;
$total = $subtotal - $discount;
$total = number_format((float)$total, 2, '.', '');
echo $total;
?>
I am working on the following code. Why am I not able to round the price to be always rounded up to nearest multiple of 5?
$fee = 364.99;
$discount = 25;
$price = round($fee - ($fee * ($discount / 100)))*5;
echo $price;
I am hoping to get 275.00 the output is 1370
You forget to divide by 5.
Correct calculation is
$price = round(($fee - ($fee * ($discount / 100))) / 5) * 5;
In general
$round = 5;
$calc = round($num / $round) * $round;
trying to create a loop to calculate a price but cant get my head around how to do it.
$sell = ($price*$vat);
$profit = ((($price*$vat)*0.04)+0.2);
function newSell($price1){
$price1 = $price1 + 0.10;
return $price;
}
do {
$price1 = newSell($price);
$profit = ((($price1*$vat)*0.04)+0.2);
} while ($profit < 0);
$price is the price of my item
$sell is my starting price.
$profit is the calcualtion to work out my profit.
What i want to do is look around and if my profit is less than 0 i want to add 10p (0.10) to my price and then recalculate my profit and evaluate it again. Want to keep going until my profit is above 1 at which point it stops and my new selling price has been set.
Cant for the life of me get my head around this!
Many thanks
First of all your newSell function should look like this:
function newSell($price) {
return $price + .1
}
It currently does nothing.
Second, are you sure this is the way you should be trying to solve this? It seems to me like you are just trying to solve for $profit >= 1. It's a simple equation that takes no loops whatsoever.
Apparently $profit = $price * $vat * .04 + .2, so you are really looking at 1 <= $price * $vat * .04 + .2 or 20 / $vat <= $price
So if $price >= 20 / $vat then $profit >= 1.
To do specifically what you asked:
do {
$profit = $price * $vat * .04 + .2;
$price = $price + .1;
} while ($profit < 1);
So I can't quite figure out what is wrong here. I am trying to calculate Sales Tax into a grand total. I'm trying to get two variables here:
A. The total amount of sales tax that is being charged (i.e. $0.61 for sales tax)
B. The Grand total including the item price times the quantity plus the sales tax.
My script is as below, The way I have this set up right now it only adds a penny to the sub total. (instead of $7.00 the total is $7.01)
If the sub total after each item is $7.00 and the tax rate is 8.650% then the tax total should be $0.61 and the grand total should be $7.61 but it's making it $7.01 instead.
public function invoice_totals($invoice_id)
{
$query = $this->CI->db->select('*');
$query = $this->CI->db->from('invoice_to_items');
$query = $this->CI->db->where('invoice_id', $invoice_id);
$query = $this->CI->db->join('items', 'items.item_id = invoice_to_items.item_id');
$query = $this->CI->db->get();
$items = $query->result();
$sub_total = '0.00';
$grand_total = '0.00';
$tax_rate = '0.0865';
$tax_total = '0.00';
foreach($items as $item)
{
$sub_total = $sub_total + ($item->item_price*$item->item_qty);
$tax_total = $tax_total + ($sub_total * $tax_rate) / 100;
}
$grand_total = $grand_total + $sub_total + $tax_total;
return array(
'sub_total' => number_format($sub_total,2),
'tax_total' => number_format($tax_total, 2),
'grand_total' => number_format($grand_total,2),
);
}
The main line I am concerned with in this question is:
$tax_total = $tax_total + ($sub_total * $tax_rate) / 100;
You're applying your taxes to your subtotal on EVERY iteration of the loop.
let's say there's 3 items: $5, $15, $40
loop #1:
subtotal = 0 + ($5 * 1) = $5
total = 0 + ($5 + 8.65%) = $5.43
loop #2: $5.43 + ($15 * 1) = $20.43
total = $5.43 + ($20.43 + 8.65%) = etc...
etc...
your #2 item has now double-taxed the first item, and your third item will be TRIPLE taxing the first item and DOUBLE taxing the second item, etc...
As well, your tax rate value is ALREADY a decimal (0.0865), yet you're doing a /100 division as if you had $tax_rate = 8.65. So effectively your tax rate is really 0.0865%
Your loop should be:
$taxrate = 8.65; // % value
foreach($items as $item) {
$item_sub = $items->quantity * $items->price;
$item_total = $item_sub * ($taxrate / 100);
$grand_total = $grand_total + $item_total;
}
Not to sound stupid but I was wondering if there is a very simple way of taking a percentage from a number in PHP?
Say I have a number of 70.40 and I want to remove 15% of this.
So far I have something like:
$discount = 15;
$price = 70.40;
$newPrice = $price - (($discount / 100) * $price);
But this seems to be giving me all kinds of random numbers.
is there an easier way?
Try this:
function apply_discount($price, $discount) {
$after_discount = $price - (($price / 100) * $discount);
return $after_discount;
}
e.g.
echo apply_discount(200, 15); //170
$discount = 15;
$price = 70.40;
$newPrice = $price * (100 - $discount) / 100;
If your $discount would be a percentage (between 0 and 1) it would be:
$discount = 0.15;
$price = 70.40;
$newPrice = $price * (1 - $discount);
70.40 * 0.15 = 10.56
whereas 0.15 is 15%
I guess you could do something like this.
$discount = 0.15;
$price = 70.40;
$newPrice = $price - ($price * $discount);