24 Aralık 2011 Cumartesi

TL Para Birimi Tutarı Yazıya Çevirmek

Fatura ve benzeri belgelerde, tutarın yazılışlarını da görmekteyiz. Söz gelimi 1,25 , BIR TL YIRMI BES KURUS. Geçtiğimiz günlerde mal kabul yapan ve tedarikçiye ürün iadesi yapacak terminal programı projesinde bu tür bir fonksiyona gerek duydum. Googling esnasında bulduğum fonksiyonların çoğu hem Yeni Türk Lirası biçemine uygun değildi, hem de kod karmaşası daha inceleme aşamasında beni yordu. Biz de iş başa düştü diyerek, bir JavaScript fonksiyonu yazdık.


Önemli Not . Yeni Türk Lirası biçemindeki tutarları yazıya çeviren fonksiyonun tüm tarayıcılarda (Chrome/Mozilla Firefox ve Internet Explorer) test edilmiş hali aşağıya eklenmiştir.

Fatura ve benzeri belgelerde, tutarın yazılışlarını da görmekteyiz. Söz gelimi 1,25 , BIR TL YIRMI BES KURUS

Geçtiğimiz günlerde mal kabul yapan ve tedarikçiye ürün iadesi yapacak terminal programı projesinde bu tür bir fonksiyona gerek duydum. Googling esnasında bulduğum fonksiyonların çoğu hem Yeni Türk Lirası biçemine uygun değildi, hem de kod karmaşası daha inceleme aşamasında beni yordu. Biz de iş başa düştü diyerek, bir JavaScript fonksiyonu yazdık.

Fonksiyonun prototipi:
string cevir(sayi,separator)

Sayı malumunuz üzere, yazıya çevrilecek tutar. Separator, yani ayraç ise, TL ve KURUŞ kısmını ayıran işaret. Bu nokta ya da virgül olabilir. Bunu fonksiyona belirtmemiz gerekiyor.

Örneğin : cevir(325,50,",")

Ekran çıktısı:


Umarım faydalı olur.


Buyrun Kod: 

12 yorum:

Adsız dedi ki...

merhaba,
konuyla alakalı değil ama c hakkında bir sorum olacak.
dizi[5]={1,2,3,4,5} şeklinde bir dizim var ve elemanlarının yerini değiştirmek istiyorum.program her çalıştığında elemanlar sabit kalacak ama yerleri değişecek.
yani dizi[5]={2,3,4,1,5}
bir daha çalışınca 3,2,4,5,1 gibi sürekli değişecek.

zyhn dedi ki...

Merhaba, geciken yanıt için özür dilerim. Aşağıdaki kodları kullanarak array shuffle (dizi karıştırma) işlemini yapabilirsiniz:
Lütfen aşağıdaki URL'yi giriniz.
http://pastebin.com/embed_iframe.php?i=9jQ6Qpsz

C. Ozcan dedi ki...

Öncelikle teşekkürler, bu kodu javascript olarak bulmak gerçekten güç. ancak başlangıç seviyesi biri olarak tam olarak kodu browser'da çalıştıramadım. Kodunuzun başına
< html>
< body>
< script type="text/JavaScript">
(tagler kullanılmadığı için boşluklu yazıyorum)
ve sonuna

< /script>
< /body>
< /html>

tagleri ekleyerek bir html oluşturdum. öncelikle sayiyi ve seperatörü kod içinde nereye yerleştirmem gerektiğini anlamadım. document.write komutuyla sadece sonucu (yazıyı) tarayıcıda görüntülemek istiyorum. daha fazla detay verirseniz eminim benim gibi bir çok kişiyede yardımcı olacak faydalı bir kod olmuş, ellerinize sağlık şimdiden teşekkürler

zyhn dedi ki...

Sayın Özcan;
Öncelikle ilginiz için teşekkür ederim.
Fonksiyonu script tagları arasında tanımlayıp, fonksiyonun hemen bitiminde test etmek amaçlı şu şekilde çağırabilirsiniz
alert(cevir("3,25",","));

Fonksiyonun Mozilla Firefox, Google Chrome ve Internet Explorer tarayıcılarında test edilmiş sürümü yorumunuzun akabinde aynı blog girdisi içerisinde yayınlanmıştır.
Tekrar teşekkürler.

C. Ozcan dedi ki...

Ziyahan bey,
cevabınız için teşekkürler. Sizin desteğinizle kodu tarayıcıda çalıştırabildim, kuruşlarda sıkıntı yok ancak sanırım kodda genel bir hata var mesela:
document.write(cevir("1100,00",","));

yazdığımda karşıma
"BİR BİN BİR YÜZ TÜRK LİRASI"
çıkıyor. sizde proje için bunu yaptığınızı belirtmişsiniz belki farketmemiş olabilirsiniz.

zyhn dedi ki...

Haklısınız. Kodu güncelledim ve sözünü ettiğiniz hatayı by pass ettim. Lütfen kontrol ediniz. Teşekkür ederim.

C. Ozcan dedi ki...

Merhabalar tekrar, ilginiz için teşekkür ederim.
21101,00 denedim,
"YIRMI BIN YUZ BIR TL" çıktı. sanırım kısmen düzelmiş ancak 11000,21000,31000 gibi rakamlarda sıkıntı oluyor sanırım.

bilgilerinize

zyhn dedi ki...

Merhabalar;
Kodun PHP versiyonu (http://ziyahanalbeniz.blogspot.com/2013/12/tl-para-birimi-tutar-yazya-cevirmek-php.html) adresinde yayımlandı. Bazı hataları da bu vesile ile düzeltmiş olduk. Bilgilerinize arz ederim.

Adsız dedi ki...

ben biraz daha kısasını yazdım paylaşmak istedim

var sonuc="";
var kusur="";
function intTofont(veri){
var ara_yazi=["","Bin","Milyon","Milyar","Trilyon","Katrilyon"];
var data=veri.substring(0,veri.indexOf("."));
var kusurat=veri.substring(veri.indexOf(".")+1);
var basamak_sayisi=data.length;
for (var i = 0; i < basamak_sayisi; i++) {
yazi_ver(data[i],basamak_sayisi-i,"on");
if((basamak_sayisi-i-1)%3==0){
sonuc=sonuc+(ara_yazi[(basamak_sayisi-i-1)/3])+" ";
}
}
for (var k = 0; k<2 ; k++) {
yazi_ver(kusurat[k],2-k,"arka");
};
return (sonuc+"TL "+kusur+" Kr");
}
function yazi_ver(veri,basamak1,yer){
var basamak=[
[0,"Sıfır","","","bin",""],
[1,"Bir","On","Yüz"],
[2,"İki","Yirmi","İki Yüz"],
[3,"Üç","Otuz","Üç Yüz"],
[4,"Dört","Krk","Dört Yüz"],
[5,"Beş","Elli","Beş Yüz"],
[6,"Altı","Altmış","Altı Yüz"],
[7,"Yedi","Yetmiş","Yedi Yüz"],
[8,"Sekiz","Seksen","Sekiz Yüz"],
[9,"Dokuz","Doksan","Dokuz Yüz"]
];
var deger=basamak1%3==0?3:basamak1%3;
if(veri!="0"){
if(yer=="on")
sonuc=sonuc+(basamak[veri][deger])+" ";
else
kusur=kusur+(basamak[veri][deger])+" ";
}
}

zyhn dedi ki...

Erdoğan Bey,
Katkınız için teekkür ederim.

Unknown dedi ki...

//erenleryazilim.com 2018
//bu kodlama, parasal sayıyı, yazılı haline getirir
//örnek: 1250.75 > BİN İKİ YÜZ ELLİ TL YETMİŞ BEŞ KR

function yaziyla(sayi)
{
rakam = sayi.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",").split(".");
tamsayi = rakam[0];
ondalik = rakam[1]||"";

var birler = ["","BİR","İKİ","ÜÇ","DÖRT","BEŞ","ALTI","YEDİ","SEKİZ","DOKUZ"];
var onlar = ["","ON","YİRMİ","OTUZ","KIRK","ELLİ","ALTMIŞ","YETMİŞ","SEKSEN","DOKSAN"];
var binler = ["","BİN","MİLYON","MİLYAR","TRİLYON","KATRİLYON","KENTİLYON"];
var sonuc = [];

var adim = 0;
for(i=tamsayi.split(",").length;i>0;i--)
{
sayi = tamsayi.split(",")[i-1];
if(sayi.length==1){ sayi="00"+sayi; }
if(sayi.length==2){ sayi="0"+sayi; }
c="";

for(j=1;j<sayi.length+1;j++)
{
if(j==1 && sayi[j-1]==1){ c+= " YÜZ "; }
else if(j==1 && birler[sayi[j-1]]!=""){ c+= birler[sayi[j-1]]+" YÜZ "; }
else if(j==2){ c+= onlar[sayi[j-1]]+" "; }
else if(j==3 && tamsayi.length==5 && sayi[j-1]==1 && adim==1){ c+= " "; }
else if(j==3){ c+= birler[sayi[j-1]]+" "; }
}

if(c!=""){ sonuc.push(c+binler[adim]); }
adim++;
}

if(sonuc.length!=0){ sonuc = sonuc.reverse().join(" ")+" TL"; }else{ sonuc=""; }
if(ondalik.length==1){ ondalik=ondalik+"0"; }
if(ondalik!=""){
sonuc += " "+onlar[ondalik[0]]+" "+birler[ondalik[1]]+ " KR";
}

sonuc = sonuc.replace(/ /g," ").trim();

return sonuc;
}


yaziyla(123456.78); //örnek çalıştırma

erenavc dedi ki...

acemiliğimi mazur görün lütfen html tarafını da belirtir misiniz ?