Calculate only value of vat - php

I trying to calculate but can't get this done, if someone can help
I have the total of the order and the vat at 23%
$vat = 23;
$total = 6.00;
For add the vat to total I will do
$total_with_vat = $total * $vat;
that will be 7.40
I now the total is 6.00, but how can I get the 1.40 of the vat
I need this to make some calculations. Looks simple but I'am not getting only to do it.
Thanks

Pretty simple
$vat = $total * $vat / 100.0;
// 1.38
If you'd like to guarantee 2 digits of precision, you can use round
$vat = round($vat, 2);
Make it into a reusable function
function calculateVat($amount, $vat=23) {
return round($amount * $vat / 100.0, 2);
}
$amount = 6.00;
$vat = calculateVat($amount);
// 1.38
If VAT is a different amount, you can specify it as a second argument
$amount = 6.00;
$vat = calculateVat($amount, 30);
// 1.8

Related

calculate discount for total amount multiplied by 100

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;
?>

Rounding a price to closest multiple of 5

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;

Loop to Calculate Price

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);

PHP Sales Tax Calculating

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;
}

Percentages in PHP

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);

Categories