Jump to content

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.

Link to comment
Share on other sites

  • 1 year later...

Ş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
Link to comment
Share on other sites

  • 1 month later...

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)
Link to comment
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},",")}
Link to comment
Share on other sites

×
×
  • Create New...