C#'ta Fatura Tutarını Yazı İle Yazdırma

by Hayati ŞAHİN 15. Şubat 2012 14:54

Geliştirdiğiniz programda fatura yazdırma özelliği varsa, fatura tutarını yazıya çevirmeniz gerekir. Bu konuda ihtiyacı karşılayacak bir çevirme fonksiyonu hazırladım. Ayrıca fonksiyonun kullanıldığı küçük bir program da yazdım. Fonksiyonun çalışmasını bu program üzerinden test edebilirsiniz. İnşallah işinize yarar.

Yazı İle Yazan Program

private string yaziyaCevir(decimal tutar)
{
    string sTutar = tutar.ToString("F2").Replace('.', ','); // Replace('.',',') ondalık ayracının . olma durumu için            
    string lira = sTutar.Substring(0, sTutar.IndexOf(',')); //tutarın tam kısmı
    string kurus = sTutar.Substring(sTutar.IndexOf(',') + 1, 2);
    string yazi = "";        
            
    string[] birler = { "", "BİR", "İKİ", "Üç", "DÖRT", "BEŞ", "ALTI", "YEDİ", "SEKİZ", "DOKUZ" };
    string[] onlar = { "", "ON", "YİRMİ", "OTUZ", "KIRK", "ELLİ", "ALTMIŞ", "YETMİŞ", "SEKSEN", "DOKSAN" };
    string[] binler = { "KATRİLYON", "TRİLYON", "MİLYAR", "MİLYON", "BİN", "" }; //KATRİLYON'un önüne ekleme yapılarak artırabilir.

    int grupSayisi = 6; //sayıdaki 3'lü grup sayısı. katrilyon içi 6. (1.234,00 daki grup sayısı 2'dir.)
                        //KATRİLYON'un başına ekleyeceğiniz her değer için grup sayısını artırınız.

    lira = lira.PadLeft(grupSayisi * 3, '0'); //sayının soluna '0' eklenerek sayı 'grup sayısı x 3' basakmaklı yapılıyor.            
        
    string grupDegeri;
	
    for (int i = 0; i < grupSayisi * 3; i += 3) //sayı 3'erli gruplar halinde ele alınıyor.
    {
        grupDegeri = "";

        if (lira.Substring(i, 1) != "0")
            grupDegeri += birler[Convert.ToInt32(lira.Substring(i, 1))] + "YÜZ"; //yüzler                

        if (grupDegeri == "BİRYÜZ") //biryüz düzeltiliyor.
            grupDegeri = "YÜZ";

        grupDegeri += onlar[Convert.ToInt32(lira.Substring(i + 1, 1))]; //onlar

        grupDegeri += birler[Convert.ToInt32(lira.Substring(i + 2, 1))]; //birler                

        if (grupDegeri != "") //binler
            grupDegeri += binler[i / 3];

        if (grupDegeri == "BİRBİN") //birbin düzeltiliyor.
            grupDegeri = "BİN";

            yazi += grupDegeri;
	}
            
    if (yazi != "")
        yazi += " TL ";

    int yaziUzunlugu = yazi.Length;

    if (kurus.Substring(0, 1) != "0") //kuruş onlar
        yazi += onlar[Convert.ToInt32(kurus.Substring(0, 1))];
            
    if (kurus.Substring(1, 1) != "0") //kuruş birler
        yazi += birler[Convert.ToInt32(kurus.Substring(1, 1))];

    if (yazi.Length > yaziUzunlugu)
        yazi += " Kr.";
    else
    yazi += "SIFIR Kr."; 

    return yazi;
}

Programı indirmek için :

Yazi_Ile_Yaz.rar (5,57 kb)

(Programın çalışabilmesi için bilgisayarınızda .NET Framework 4 Client Profile'in yüklü olması gerekir.)

Son Yorumlar

Comment RSS

Etiket Bulutu