БЛОГОДЖУМЛА - БЛОГ О ДЖУМЛА

Сумма прописью

  • Категория: Joomla
  • Автор:
  • Просмотров: 7124

virtuemart Список заказов

По просьбе одной из читательниц делюсь функцией Сумма Прописью (хотя гугл доступен :) ) Не претендую на авторство - давным давно нашел на просторах рунета.

Вызывается как num2str(Ваша_Сумма) 


	// Функция СУММА ПРОПИСЬЮ

	

	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 < 3 && $f > 0 ){

	IF ( $f >= 2 ) {

	$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;

	// это для вывода суммы прописью

	$_1_2[1]="одна ";

	$_1_2[2]="две ";

	

	$_1_19[1]="один ";

	$_1_19[2]="два ";

	$_1_19[3]="три ";

	$_1_19[4]="четыре ";

	$_1_19[5]="пять ";

	$_1_19[6]="шесть ";

	$_1_19[7]="семь ";

	$_1_19[8]="восемь ";

	$_1_19[9]="девять ";

	$_1_19[10]="десять ";

	$_1_19[11]="одиннацать ";

	$_1_19[12]="двенадцать ";

	$_1_19[13]="тринадцать ";

	$_1_19[14]="четырнадцать ";

	$_1_19[15]="пятнадцать ";

	$_1_19[16]="шестнадцать ";

	$_1_19[17]="семнадцать ";

	$_1_19[18]="восемнадцать ";

	$_1_19[19]="девятнадцать ";

	

	$des[2]="двадцать ";

	$des[3]="тридцать ";

	$des[4]="сорок ";

	$des[5]="пятьдесят ";

	$des[6]="шестьдесят ";

	$des[7]="семьдесят ";

	$des[8]="восемдесят ";

	$des[9]="девяносто ";

	

	$hang[1]="сто ";

	$hang[2]="двести ";

	$hang[3]="триста ";

	$hang[4]="четыреста ";

	$hang[5]="пятьсот ";

	$hang[6]="шестьсот ";

	$hang[7]="семьсот ";

	$hang[8]="восемьсот ";

	$hang[9]="девятьсот ";

	

	$namerub[1]="рубль ";

	$namerub[2]="рубля ";

	$namerub[3]="рублей ";

	

	$nametho[1]="тысяча ";

	$nametho[2]="тысячи ";

	$nametho[3]="тысяч ";

	

	$namemil[1]="миллион ";

	$namemil[2]="миллиона ";

	$namemil[3]="миллионов ";

	

	$namemrd[1]="миллиард ";

	$namemrd[2]="миллиарда ";

	$namemrd[3]="миллиардов ";

	

	$kopeek[1]="копейка ";

	$kopeek[2]="копейки ";

	$kopeek[3]="копеек ";

	

	$s=" ";

	$s1=" ";

	$s2=" ";

	$kop=intval( ( $L*100 - 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.="рублей ";

	}

	}

	

	IF($L >= 1000){

	$many=0;

	semantic(intval($L / 1000),$s1,$many,1);

	$s.=$s1.$nametho[$many];

	$L%=1000;

	IF($L==0){

	$s.="рублей ";

	}

	}

	

	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 копеек";

	}

	

	RETURN $s;

	}

	

	// КОНЕЦ функции СУММА ПРОПИСЬЮ
Back to top