v2.5.2
Giriş yap

PHP ile KDV Hesaplama

redline
1,783 defa görüntülendi ve 1 kişi tarafından değerlendirildi

Merhaba PT.

Bir çalışmamda KDV hesaplama durumu ortaya çıktı. KDV dahil tutardan KDV hariç veya KDV hariçten KDV dahil tutarı hesaplama gibi durumlarda küsürat sorunu yaşıyorum.

Burada yaşadığım problem;


$tutar = "100.00";
$kdv = "18";

$sonuc = $tutar / (1 + ($kdv/100));
// SONUÇ: 84.745762711864

SONUÇ'da görünen kısımdaki 74'den sonraki rakamın büyüklüğüne göre yukarı düzlemek (84,75) veya;


$tutar = "101.00";
$kdv = "18";

$sonuc = $tutar / (1 + ($kdv/100));
// SONUÇ: 85.593220338983

Buradaki SONUÇ da görünen 59'dan sonraki kısım aşağıda olduğu için (85.59) sonucu almak istiyorum.

Burada da anladığım kadarıyla dediğim mantıkta yapıyor işlemi.

ceil() veya round() gibi fonksiyonları denedim ama noktadan sonraki kısmı direk yuvarlıyor.

NOT: Ürün fiyatını veritabanında decimal(9,2) şeklinde tutuyorum.

Cevap yaz
Cevaplar (6)
rehan
22 gün önce

<?php
// Calculate price excluding VAT
function priceExcludingVAT($priceWithVAT, $vatRate)
{

// $vatRate should be written like 20 for 20%
$multiplier = 1 + ($vatRate / 100);
return $priceWithVAT / $multiplier;

}

// Example usage:
$priceWithVAT = 120; // price including VAT
$vatRate = 20; // VAT rate %
$netPrice = priceExcludingVAT($priceWithVAT, $vatRate);

echo "Price excluding VAT: " . number_format($netPrice, 2);
?>

PHP’de KDV dahil bir tutarı KDV hariç fiyatına dönüştürmek için toplam fiyatı 1 + KDV oranına bölmek yeterlidir. Aşağıdaki fonksiyon bu işlemi otomatik yapıyor. KDV hesaplamaları ve örnekler için şu kaynağı da faydalı bulabilirsiniz: https://kdvhesaplama.org/

database
267 gün önce

Çok basit bir yöntemi var

$fiyat = 1300;
$kdv   = 20;
$sonuc = $fiyat + ($fiyat * ($kdv / 100));

echo number_format($sonuc, 2, ',', '.');

# Türkiye de binlikler '.' ile ondalıklar ',' ile ayrılmaktadır sonuç 1.560,00 olarak çıkacaktır.

kdvhesaplama
276 gün önce

Here’s a PHP example for VAT (kdv hesaplama) calculation:

php
Copy
Edit
<?php
function kdvHesapla($amount, $kdvRate) {

$kdvAmount = $amount * ($kdvRate / 100);
$totalAmount = $amount + $kdvAmount;

return [
    'kdvAmount' => number_format($kdvAmount, 2, '.', ''),
    'totalAmount' => number_format($totalAmount, 2, '.', '')
];

}

// Örnek kullanım
$amount = 100; // Ürün fiyatı
$kdvRate = 18; // KDV oranı (%18)

$result = kdvHesapla($amount, $kdvRate);

echo "KDV Tutarı: " . $result['kdvAmount'] . " TL\n";
echo "Toplam Tutar: " . $result['totalAmount'] . " TL\n";
?>
Bu kod, verilen tutar üzerinden kdv hesaplama işlemini yaparak KDV tutarını ve toplam fiyatı döndürür.
https://kdvhesap.net/

h4ckdr0
1092 gün önce

Kodunuzu şu şekilde düzelterek istediğiniz sonuca ulaşabilisiniz!

<?php
function kdvsizTutar($tutar, $kdv) {
  $sonuc = $tutar / (1 + ($kdv/100));
  return number_format($sonuc, 2, '.', '');
}

$kdv = "18";

$tutar = "100.00";
echo kdvsizTutar($tutar, $kdv); // 84.75

$tutar = "101.00";
echo kdvsizTutar($tutar, $kdv); // 85.59
redline
1105 gün önce

@serkan hocam number_format() fonksiyonunu biliyorum fakat bu fonksiyon 1000'li rakamlarda noktalama da yapıyor. İşin özünde yukarda belirttiğim gibi decimal(9,2) şeklinde veritabanında tutarken zaten kendi istediğim işlemi yapıyor. Sepette ve sipariş detayında doğru rakamları gösterebilmek için aslında bu çabaya girdim. number_format() ile çözeceğim gibi görünüyor. Teşekkür ederim. :)

serkan
1106 gün önce

$tutar = "101.00";
$kdv = "18";
$sonuc = number_format($tutar / (1 + ($kdv/100)),2);
echo $sonuc; //85.59

aradığın şey bu sanırsam
---------- buda javascript ile ---------

    var tutar=101.00;
    var kdv =18;
    var sonuc =tutar / (1 + (kdv/100))
    var sonuc = sonuc.toFixed(2)
     alert(sonuc); //85.59