Jump to content
bugrakorkmaz

Faturaya, Tutarını Yazı İle Yazmak

Recommended Posts

Arkadaşlar Merhaba,

 

Ben fatura üzerinde istediğim şekilde düzenleme ve değişiklik yaptım ancak bildiğiniz gibi faturaların üzerinde toplam tutarın yazı ile yazıldığı bir alan oluyor. (Örneğin 152.90TL fatura toplamı için YüzElliİkiLiraDoksanKuruş yazılacak).

 

Bu işlemi yapacak olan php fonksiyonu elimde var ancak bu dosyayı presta sisteminde nereye koyacağımı ve geri döndürdüğü değeri faturada {} tag' ları arasında nasıl kullanacağımı bilmiyorum. Eğer yardımcı olabilirseniz çok sevinirim.

 

Teşekkürler.

Share this post


Link to post
Share on other sites

Şu şekilde çözebilirsiniz...

 

/config/config.inc.php en altına ekleyin....

function yaziylasayi($sayi) {  
    $o = array(  
        'birlik' => array('bir', 'iki', 'üç', 'dört', 'beş', 'altı', 'yedi', 'sekiz', 'dokuz'),  
        'onluk' => array('on', 'yirmi', 'otuz', 'kırk', 'elli', 'altmış', 'yetmiş', 'seksen', 'doksan'),  
        'basamak' => array('yüz', 'bin', 'milyon', 'milyar', 'trilyon', 'katrilyon')  
    );  
  
    $basamak = array_reverse(str_split(implode('', array_reverse(str_split($sayi))), 3));  
 
    $basamak_sayisi = count($basamak);  
 
    for($i=0; $i < $basamak_sayisi; ++$i) {  
        $basamak[$i] = implode(array_reverse(str_split($basamak[$i])));  
          
        if(strlen($basamak[$i]) == 1)  
            $basamak[$i] = '00' . $basamak[$i];  
        elseif(strlen($basamak[$i]) == 2)  
            $basamak[$i] = '0' . $basamak[$i];  
    }  

    $yenisayi = array();  

    foreach($basamak as $k => $ {  
        if($b[0] > 0)  
            $yenisayi[] = ($b[0] > 1 ? $o['birlik'][$b[0]-1] . ' ' : '') . $o['basamak'][0];  

        if($b[1] > 0)  
            $yenisayi[] = $o['onluk'][$b[1]-1];  

        if($b[2] > 0)  
            $yenisayi[] = $o['birlik'][$b[2]-1];  

        if($basamak_sayisi > 1)  
            $yenisayi[] = $o['basamak'][$basamak_sayisi-1];  

        --$basamak_sayisi;  
    }  
      
    return implode(' ', $yenisayi); 
	  $smarty->assign('yaziylasayi', $yaziylasayi); 
}  

pdf/invoice.tpl içerisine istediğiniz ekleyin

{yaziylasayi({displayPrice currency=$order->id_currency price=$order_invoice->total_paid_tax_incl})}

Not : config.inc.php 

 

2GTKzfe.png

 

Sonuç

 

MKxiriq.png

  • Like 1

Share this post


Link to post
Share on other sites

bende öyle birşey çıkmıyorki . ftp programıyla notepadde değiştiriyorum ben

Share this post


Link to post
Share on other sites

Dreamweaver kullanın...Dreamweaver kullanmadan sen bu siteyi bu hale getirdiysen büyük bir başarı göstermişsin....:)

  • Like 1

Share this post


Link to post
Share on other sites

sağol üstad. dreamweaver eskiden iyi değildi . benimki grafikerlik sayesinde oldu hocam. uzun süre grafik tasarım yaptım

Share this post


Link to post
Share on other sites

Merhaba,

 

paylaşım çok güzel prestanın açığını kapatacak bi çözüm. emeğinize sağlık fakat bi durum var virgülden sonrayı otomatik olarak bin,yüzbin gibi gözüküyor. Aslında sizin paylaştığını fatura görselindede de aynı sorun var. 

 

Görselde Fatura tutarı rakkam ile 21,71 fakat yazan yirmibir milyon yetmiş bir bin

 

 

olması gereken (YİRMİ BİR TL YETMİŞ BİR KR )

Edited by alex.killioglu (see edit history)

Share this post


Link to post
Share on other sites

Teşekkürler... Farklı şekilde çözdüm.

 

/config/config.inc.php dosyasının sonuna aşağıdaki kodu ekledim...

function cevir($sayi, $separator) {
    $sayarr = explode($separator,$sayi);
 
    $str = "";
    $items = array(
        array("", ""),
        array("BIR", "ON"),
        array("IKI", "YIRMI"),
        array("UC", "OTUZ"),
        array("DORT", "KIRK"),
        array("BES", "ELLI"),
        array("ALTI", "ALTMIS"),
        array("YEDI", "YETMIS"),
        array("SEKIZ", "SEKSEN"),
        array("DOKUZ", "DOKSAN")
    );
 
    for ($eleman = 0; $eleman<count($sayarr); $eleman++) {
 
        for ($basamak = 1; $basamak <=strlen($sayarr[$eleman]); $basamak++) {
            $basamakd = 1 + (strlen($sayarr[$eleman]) - $basamak);
 
 
            try {
                switch ($basamakd) {
                    case 5:
                        $str = $str . " " . $items[substr($sayarr[$eleman],$basamak - 1,1)][0] . " YUZ";
                        break;
                    case 4:
                        $str = $str . " " . $items[substr($sayarr[$eleman],$basamak - 1,1)][1];
                        break;
                    case 3:
                        if($items[substr($sayarr[$eleman],$basamak - 1,1)][0]=="") {
                            $str.=" ";
                        }
                        elseif ($items[substr($sayarr[$eleman],$basamak - 1,1)][0] != "BIR" ) $str = $str . " " . $items[substr($sayarr[$eleman],$basamak - 1,1)][0] . " YUZ";
 
                        else $str = $str . " YUZ";
                        break;
                    case 2:
                        $str = $str . " " . $items[substr($sayarr[$eleman],$basamak - 1,1)][1];
                        break;
                    default:
                        $str =  $str . " " . $items[substr($sayarr[$eleman],$basamak - 1,1)][0];
                        break;
                }
            } catch (Exception $err) {
                echo $err->getMessage();
                break;
            }
        }
        if ($eleman< 1) $str = $str . " TL";
        else {
            if ($sayarr[1] != "00") $str = $str . " KRS";
        }
    }
    return $str;
}

pdf/invoice.tpl dosyasında yazının çıkmasını istediğim yere aşağıdaki kodu ekledim. (Not: kuruş ayıracı nokta ise sondaki "," olan kısmı "." olarak değiştirmek gerekiyor.)

{cevir({displayPrice currency=$order->id_currency price=$order_invoice->total_paid_tax_incl},",")}

Share this post


Link to post
Share on other sites

×
×
  • Create New...

Important Information

Cookies ensure the smooth running of our services. Using these, you accept the use of cookies. Learn More