/**
* Перетворює число на суму прописом (українською мовою).
* @param {number} inputNumber Число для перетворення.
* @return Сума прописом.
* @customfunction
*/
function UKR_SUMA(inputNumber) {
if (isNaN(inputNumber) || inputNumber === "") return "";
var num = parseFloat(inputNumber).toFixed(2);
var parts = num.split(".");
var rubles = parseInt(parts[0], 10);
var kopecks = parts[1];
if (rubles === 0) return "Нуль гривень " + kopecks + " копійок";
var ones = ["", "одна", "дві", "три", "чотири", "п'ять", "шість", "сім", "вісім", "дев'ять"];
var ones_m = ["", "один", "два", "три", "чотири", "п'ять", "шість", "сім", "вісім", "дев'ять"];
var teens = ["десять", "одинадцять", "дванадцять", "тринадцять", "чотирнадцять", "п'ятнадцять", "шістнадцять", "сімнадцять", "вісімнадцять", "дев'ятнадцять"];
var tens = ["", "", "двадцять", "тридцять", "сорок", "п'ятдесят", "шістдесят", "сімдесят", "вісімдесят", "дев'яносто"];
var hundreds = ["", "сто", "двісті", "триста", "чотириста", "п'ятсот", "шістсот", "сімсот", "вісімсот", "дев'ятсот"];
function getGroup(n, gender) {
var r = "";
var h = Math.floor(n / 100);
var t = Math.floor((n % 100) / 10);
var o = n % 10;
if (h > 0) r += hundreds[h] + " ";
if (t === 1) {
r += teens[o] + " ";
} else {
if (t > 1) r += tens[t] + " ";
if (o > 0) r += (gender === 'f' ? ones[o] : ones_m[o]) + " ";
}
return r.trim();
}
var result = "";
var millions = Math.floor(rubles / 1000000);
var thousands = Math.floor((rubles % 1000000) / 1000);
var units = rubles % 1000;
if (millions > 0) {
result += getGroup(millions, 'm') + " мільйон";
var m10 = millions % 100;
var m1 = millions % 10;
if (m10 >= 11 && m10 <= 14) result += "ів ";
else if (m1 === 1) result += " ";
else if (m1 >= 2 && m1 <= 4) result += "и ";
else result += "ів ";
}
if (thousands > 0) {
result += getGroup(thousands, 'f') + " тисяч";
var t10 = thousands % 100;
var t1 = thousands % 10;
if (t10 >= 11 && t10 <= 14) result += " ";
else if (t1 === 1) result += "а ";
else if (t1 >= 2 && t1 <= 4) result += "і ";
else result += " ";
}
if (units > 0) {
result += getGroup(units, 'f');
}
// Узгодження валюти (Гривня)
var currency = " гривень";
var u10 = rubles % 100;
var u1 = rubles % 10;
if (u10 >= 11 && u10 <= 14) currency = " гривень";
else if (u1 === 1) currency = " гривня";
else if (u1 >= 2 && u1 <= 4) currency = " гривні";
// Робимо першу літеру великою
var finalString = result.trim() + currency + " " + kopecks + " копійок";
return finalString.charAt(0).toUpperCase() + finalString.slice(1);
}