Чек и сумма прописью

Тема в разделе "WebAsyst", создана пользователем 99cent, 13 апр 2011.

Модераторы: mdss
  1. 99cent

    99cent

    Регистр.:
    27 фев 2009
    Сообщения:
    194
    Симпатии:
    11
    Многим было бы удобно распечатывать чек из админки. Такая возможность есть. Можно переделать инвойс под чек, но как сделать что бы автоматом прописывалась сумма прописью? Кто знает решения - опишите плиз.
     
  2. venetu

    venetu

    Регистр.:
    28 мар 2007
    Сообщения:
    735
    Симпатии:
    261
    У меня где-то был вариант на украинском, но там переделать не сложно. Единственное что - код ужасен. Но с другой стороны, тебе его в рамочку не распечатывать, работает - и ладно. Он работает. Проверял. )

    PHP:


    // Число в строку //



    $_1_2[1]="одна "
    $_1_2[2]="двi "

    $_1_19[1]="одна "
    $_1_19[2]="двi "
    $_1_19[3]="три "
    $_1_19[4]="чотири "
    $_1_19[5]="п'ять "
    $_1_19[6]="шiсть "
    $_1_19[7]="сiм "
    $_1_19[8]="вiсiм "
    $_1_19[9]="дев'ять "
    $_1_19[10]="десять "

    $_1_19[11]="одинадцять "
    $_1_19[12]="дванадцять "
    $_1_19[13]="тринадцять "
    $_1_19[14]="чотирнадцять "
    $_1_19[15]="п'ятнадцять "
    $_1_19[16]="шiстнадцять "
    $_1_19[17]="сiмнадцять "
    $_1_19[18]="вiсiмнадцять "
    $_1_19[19]="дев'ятнадцять "

    $des[2]="двадцять "
    $des[3]="тридцять "
    $des[4]="сорок "
    $des[5]="п'ятдесят "
    $des[6]="шiстдесят "
    $des[7]="сiмдесят "
    $des[8]="вiсiмдесят "
    $des[9]="дев'яносто "

    $hang[1]="сто "
    $hang[2]="двiстi "
    $hang[3]="триста "
    $hang[4]="чотириста "
    $hang[5]="п'ятсот "
    $hang[6]="шiстсот "
    $hang[7]="сiмсот "
    $hang[8]="вiсiмсот "
    $hang[9]="дев'ятсот "

    /*
    $namerub[1]="гривня "; 
    $namerub[2]="гривнi "; 
    $namerub[3]="гривень "; 
    */
    $namerub[1]="грн. "
    $namerub[2]="грн. "
    $namerub[3]="грн. "


    $nametho[1]="тисяча "
    $nametho[2]="тисячi "
    $nametho[3]="тисяч "

    $namemil[1]="мiльйон "
    $namemil[2]="мiльйона "
    $namemil[3]="мiльйонiв "

    $namemrd[1]="мiлiард "
    $namemrd[2]="мiлiарда "
    $namemrd[3]="мiлiардов "

    $kopeek[1]="копiйка "
    $kopeek[2]="копiйки "
    $kopeek[3]="копiйок "


    function 
    semantic($i,&$words,&$fem,$f){ 
    global 
    $_1_2$_1_19$des$hang$namerub$nametho$namemil$namemrd
    $words=""
    $fl=0
    if(
    $i >= 100){ 
    $jkl intval($i 100); 
    $words.=$hang[$jkl]; 
    $i%=100

    if(
    $i >= 20){ 
    $jkl intval($i 10); 
    $words.=$des[$jkl]; 
    $i%=10
    $fl=1

    switch(
    $i){ 
    case 
    1$fem=1; break; 
    case 
    2
    case 
    3
    case 
    4$fem=2; break; 
    default: 
    $fem=3; break; 

    if( 
    $i ){ 
    if( 
    $i && $f ){ 
    if ( 
    $f >= ) { 
    $words.=$_1_19[$i]; 

    else { 
    $words.=$_1_2[$i]; 


    else { 
    $words.=$_1_19[$i]; 





    function 
    num2str($L) { 
    global 
    $_1_2$_1_19$des$hang$namerub$nametho$namemil$namemrd$kopeek
    $s=" "
    $s1=" "
    $s2=" "
    $L round($L*100)/100;
    $kop=intval( (round($L*100) - round(intval($L)*100))); 
    $L=intval($L); 
    if(
    $L>=1000000000){ 
    $many=0
    semantic(intval($L 1000000000),$s1,$many,3); 
    $s.=$s1.$namemrd[$many]; 
    $L%=1000000000


    if(
    $L >= 1000000){ 
    $many=0
    semantic(intval($L 1000000),$s1,$many,2); 
    $s.=$s1.$namemil[$many]; 
    $L%=1000000
    if(
    $L==0){ 
    $s.= $namerub[3]; 



    if(
    $L >= 1000){ 
    $many=0
    semantic(intval($L 1000),$s1,$many,1); 
    $s.=$s1.$nametho[$many]; 
    $L%=1000
    if(
    $L==0){ 
    $s.= $namerub[3]; 



    if(
    $L != 0){ 
    $many=0
    semantic($L,$s1,$many,0); 
    $s.=$s1.$namerub[$many]; 



    //if($kop > 0){ 
    //$many=0; 
    //semantic($kop,$s1,$many,1); 
    //$s.=$s1.$kopeek[$many]; 
    //} 
    //else { 
    //$s.=" 00 $kopeek[3]"; 
    //} 

    if ($kop 10$kop '0'.$kop;
    $s.=$kop коп."

    $s trim($s);
    if (
    $s[0] == 'ч'$s[0]='Ч';
    else if (
    $s[0] == 'я'$s[0]='Я';
    else 
    $s ucfirst($s);

    return 
    $s



    //  ------  //


     
    hok нравится это.
  3. 99cent

    99cent

    Регистр.:
    27 фев 2009
    Сообщения:
    194
    Симпатии:
    11
    Отлично, а как это прикрутить к инвойсу? Я в пхп не силен
     
  4. 99cent

    99cent

    Регистр.:
    27 фев 2009
    Сообщения:
    194
    Симпатии:
    11
    Не дождался ответа. Решил вопрос путем редактирования не инвойса, а товарной накладной. Там уже есть сумма прописью.
    Для тех кому вместо рубля нужна грн. -> можно подредактировать файл
    published/ → SC/ → html/ → scripts/ → classes/ class.currency.php

    ищем:
    PHP:
            $s .= ($s&&$c)?" ":'';
            switch(
    $c){//единицы
                
    case 1
                    switch(
    $rod){
                        case 
    0:$s .= "одна";break;//ж.р. И.п.
                        
    case 1:$s .= "один";break;//м.р. И.п. 
                        
    case 2:$s .= "одну";break;//ж.р. Р.п.
                        
    case 3:$s .= "один";break;//м.р. Р.п. 
                    
    }
                    break;
                case 
    2:
                    switch(
    $rod){
                        case 
    0:$s .= "две";break;//ж.р. И.п.
                        
    case 1:$s .= "два";break;//м.р. И.п.  
                        
    case 2:$s .= "две";break;//ж.р. Р.п.
                        
    case 3:$s .= "два";break;//м.р. Р.п.  
                    
    }
    меняем на:
    PHP:
    switch($c){//единицы
                
    case 1
                    switch(
    $rod){
                        case 
    0:$s .= "одна";break;//ж.р. И.п.
                        
    case 1:$s .= "одна";break;//м.р. И.п. 
                        
    case 2:$s .= "одну";break;//ж.р. Р.п.
                        
    case 3:$s .= "одну";break;//м.р. Р.п. 
                    
    }
                    break;
                case 
    2:
                    switch(
    $rod){
                        case 
    0:$s .= "две";break;//ж.р. И.п.
                        
    case 1:$s .= "две";break;//м.р. И.п.  
                        
    case 2:$s .= "две";break;//ж.р. Р.п.
                        
    case 3:$s .= "две";break;//м.р. Р.п.  
                    
    }
    ищем:
    PHP:
    if ($roubles 0)
            {
                
    $rub "ей";
                
    $temp $roubles 10;
                if (
    floor(($roubles 100)/10) != 1)
                {
                    if (
    $temp == 1$rub "ь";
                    else if (
    $temp >=&& $temp <= 4$rub "я";
                }
                
    $s .=  self::number2string($roubles,1)." рубл{$rub} ";
            }
    меняем на:
    PHP:
    if ($roubles 0)
            {
                
    $rub "";
                
    $temp $roubles 10;
                if (
    floor(($roubles 100)/10) != 1)
                {
                    if (
    $temp == 1$rub "";
                    else if (
    $temp >=&& $temp <= 4$rub "";
                }
                
    $s .=  self::number2string($roubles,1)." грн.{$rub} ";
            }
     
    hok нравится это.