/** * wcj_order_total_in_words. * * @version 2.5.9 */ function wcj_order_total_in_words($atts) { $order_total = true === $atts['excl_tax'] ? $this->the_order->get_total() - $this->the_order->get_total_tax() : $this->the_order->get_total(); $order_total_whole = intval($order_total); $order_total_decimal = round(($order_total - $order_total_whole) * 100); $the_number_in_words = '%s %s'; $the_number_in_words .= 0 != $order_total_decimal ? ', %s %s.' : '.'; $dollars = $atts['whole']; $cents = $atts['decimal']; switch ($atts['lang']) { case 'LT': return sprintf($the_number_in_words, $this->mb_ucfirst(convert_number_to_words_lt($order_total_whole)), $dollars, $this->mb_ucfirst(convert_number_to_words_lt($order_total_decimal)), $cents); case 'BG': return sprintf($the_number_in_words, $this->mb_ucfirst(trim(convert_number_to_words_bg($order_total_whole))), $dollars, $this->mb_ucfirst(trim(convert_number_to_words_bg($order_total_decimal))), $cents); default: // 'EN' return sprintf($the_number_in_words, ucfirst(convert_number_to_words($order_total_whole)), $dollars, ucfirst(convert_number_to_words($order_total_decimal)), $cents); } }
/** * convert_number_to_words_bg. * * @version 2.5.9 * @return string */ function convert_number_to_words_bg($num, $tri = 0) { $edinici = array(0 => "", 1 => array(0 => " един", 1 => "", 2 => " eдин", 3 => " eдин", 4 => " eдин", 5 => " eдин", 6 => " eдин", 7 => " eдин", 8 => " eдин", 9 => " eдин", 10 => " eдин"), 2 => array(0 => " два", 1 => " двe", 2 => " два", 3 => " два", 4 => " два", 5 => " два", 6 => " два", 7 => " два", 8 => " два", 9 => " два", 10 => " два"), 3 => " три", 4 => " четири", 5 => " пет", 6 => " шест", 7 => " седем", 8 => " осем", 9 => " девет", 10 => " десет", 11 => " единадесет", 12 => " дванадесет", 13 => " тринадесет", 14 => " четиринадесет", 15 => " петнадесет", 16 => " шестнадесет", 17 => " седемнадесет", 18 => " осемнадесет", 19 => " деветнадесет"); $desetici = array(0 => "", 1 => "", 2 => " двадесет", 3 => " тридесет", 4 => " четиридесет", 5 => " петдесет", 6 => " шестдесет", 7 => " седемдесет", 8 => " осемдесет", 9 => " деведесет"); $stotici = array(0 => "", 1 => " сто", 2 => " двеста", 3 => " триста", 4 => " четиристотин", 5 => " петстотин", 6 => " шестстотин", 7 => " седемстотин", 8 => " осемстотин", 9 => " деветстотин"); $tripleti = array(0 => "", 1 => array(0 => " хиляда", 1 => " хиляди"), 2 => array(0 => " милион", 1 => " милиона"), 3 => array(0 => " билион", 1 => " билионa"), 4 => array(0 => " трилион", 1 => " трилиона"), 5 => array(0 => " квадрилион", 1 => " квадрилиона"), 6 => array(0 => " квинтилион", 1 => " квинтилиони"), 7 => array(0 => " сикстилион", 1 => " сикстилион"), 8 => array(0 => " септилион", 1 => " септилиони"), 9 => array(0 => " октилион", 1 => " октилион"), 10 => array(0 => " нонилион", 1 => " нонилиои")); //взимаме само цялата част от числото, без стойността //след десетичната запетая $n = explode(".", $num); $num = $n[0]; $r = (int) ($num / 1000); $x = $num / 100 % 10; $y = $num % 100; $str = ""; // стотици if ($x > 0) { $str = $stotici[$x]; } // единици и десетици if ($y < 20) { if ($y == 0 && $r > 0) { $str = ' и ' . $str; } if (is_array($edinici[$y]) && isset($edinici[$y][$tri])) { $str .= ' ' . $edinici[$y][$tri]; } else { $str .= ' ' . $edinici[$y]; } } else { if ($edinici[$y % 10]) { $str .= $desetici[(int) ($y / 10)]; $str .= ' и'; if (is_array($edinici[$y % 10]) && isset($edinici[$y % 10][$tri])) { $str .= $edinici[$y % 10][$tri]; } else { $str .= $edinici[$y % 10]; } } else { $str .= ' и' . $desetici[(int) ($y / 10)]; } } // добавяне на модификатор - хиляди, милиони, билиони if ($str != "") { //Ако има зададени опции за единствено и мн. число if (is_array($tripleti[$tri])) { //мн. число ли е? if ($num > 1) { $str .= $tripleti[$tri][1]; } else { $str .= $tripleti[$tri][0]; } } else { $str .= $tripleti[$tri]; } $str = str_replace('един стотин', 'сто', $str); $str = str_replace('един хиляди', 'хиляда', $str); } //ако сме на първата стъпка (т.е. определяме числото до стотици) /* if($tri == 0) { //добавяме префикс за лева $str .= ' лева'; //и ако има сетнати стотинки ги добавяме и тях if(isset($n[1])) { $str .= ' и '.$n[1].'ст.'; } } */ // продължаване рекрусивно? if ($r > 0) { return convert_number_to_words_bg($r, $tri + 1) . $str; } else { return $str; } }