Advertisement
simeonshopov

convert price into words

May 17th, 2024
629
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
JavaScript 19.05 KB | Source Code | 0 0
  1.                     convertPriceToWords: function (price) {
  2.                         let final = '';
  3.                         const singles = ['', 'един', 'две', 'три', 'четири', 'пет', 'шест', 'седем', 'осем', 'девет'];
  4.                         const tens = ['десет', 'единадесет', 'дванадесет', 'тринадесет', 'четиринадесет', 'петнадесет',
  5.                             'шестнадесет', 'седемнадесет', 'осемнадесет', 'деветнадесет'];
  6.                         const twenties = ['десет', 'двадесет', 'тридесет', 'четиридесет', 'петдесет', 'шестдесет', 'седемдесет',
  7.                             'осемдесет', 'деветдесет'];
  8.                         const hundreds = ['сто', 'двеста', 'триста', 'четиристотин', 'петстотин', 'шестстотин', 'седемстотин',
  9.                             'осемстотин', 'деветстотин'];
  10.  
  11.                         if (typeof price === "number") {
  12.                             final = `${price.toFixed(2)} (`;
  13.                             price = price.toString();
  14.                             let decimalPoint = price.indexOf('.');
  15.                             if (decimalPoint === -1) {
  16.                                 decimalPoint = price.length;
  17.                             }
  18.                             let numbers = price.split('');
  19.  
  20.                             for (let i = 0; i < decimalPoint; i++) {
  21.                                 if (decimalPoint === 6 && i === 0) { // стотици хиляди
  22.                                     if (numbers[i] === '1') {
  23.                                         final += ` ${hundreds[Number(numbers[i]) - 1]}`;
  24.                                         i++;
  25.                                     } else if (numbers[i] !== '0') {
  26.                                         final += ` ${hundreds[Number(numbers[i]) - 1]}`;
  27.                                         i++;
  28.                                     }
  29.                                     // десетиците от стотиците хиляди
  30.                                     if (numbers[i] === '0') {
  31.                                         if (numbers[i + 1] === '0') {
  32.                                             final += ' хиляди';
  33.                                             i += 2;
  34.                                         } else {
  35.                                             final += ' и';
  36.                                             if (numbers[i + 1] === '1') {
  37.                                                 final += ' една'
  38.                                             } else {
  39.                                                 final += ` ${singles[Number(numbers[i + 1])]}`
  40.                                             }
  41.                                             final += ' хиляди';
  42.                                             i += 2;
  43.                                         }
  44.                                     } else {
  45.                                         numbers[ i + 1] === '0' || numbers[i] === '1' ? final += ' и' : '';
  46.                                         if (numbers[i] === '1') {
  47.                                             final += ` ${tens[Number(numbers[i + 1])]}`;
  48.                                         } else {
  49.                                             final += ` ${twenties[Number(numbers[i] - 1)]}`;
  50.                                         }
  51.  
  52.                                         if (numbers[i + 1] === '1' && numbers[i] !== '1') {
  53.                                             final += ' и една';
  54.                                         } else if (numbers[i + 1] !== '0' && numbers[i] !== '1') {
  55.                                             final += ` и ${singles[Number(numbers[i + 1])]}`;
  56.                                         }
  57.  
  58.                                         final += ' хиляди';
  59.                                         i += 2;
  60.                                     }
  61.  
  62.                                     // стотици
  63.                                     if (numbers[i] !== '0') {
  64.                                         if (numbers[i + 1] === '0' && numbers[i + 2] === '0') {
  65.                                             final += ' и';
  66.                                             final += ` ${hundreds[Number(numbers[i]) - 1]}`;
  67.                                             final += ' лева';
  68.                                             i += 2;
  69.                                         } else if (numbers[i + 1] !== '0') {
  70.                                             final += ` ${hundreds[Number(numbers[i]) - 1]}`;
  71.                                             i++;
  72.                                             if (numbers[i] === '1') {
  73.                                                 final += ` и ${tens[Number(numbers[i + 1])]} лева`;
  74.                                             } else {
  75.                                                 if (numbers[i + 1] === '0') {
  76.                                                     final += ` и ${twenties[Number(numbers[i] - 1)]} лева`;
  77.                                                 } else {
  78.                                                     final += ` ${twenties[Number(numbers[i] - 1)]}`;
  79.                                                     if (numbers[i + 1] === '2') {
  80.                                                         final += ' и два лева';
  81.                                                     } else {
  82.                                                         final += ` и ${singles[Number(numbers[i + 1])]} лева`;
  83.                                                     }
  84.                                                 }
  85.                                             }
  86.                                         } else {
  87.                                             final += ` ${hundreds[Number(numbers[i]) - 1]}`;
  88.                                             i += 2;
  89.                                             if (numbers[i] === '2') {
  90.                                                 final += ' и двa лева';
  91.                                             } else {
  92.                                                 final += ` и ${singles[Number(numbers[i])]} лева`;
  93.                                             }
  94.                                         }
  95.                                     } else {
  96.                                         i++;
  97.                                         if (numbers[i] === '0') {
  98.                                             i++;
  99.                                             if(numbers[i] === '2') {
  100.                                                 final += ' и два лева';
  101.                                             } else {
  102.                                                 final += ` и ${singles[Number(numbers[i])]} лева`;
  103.                                             }
  104.                                         } else if (numbers[i] === '1') {
  105.                                             final += ` и ${tens[Number(numbers[i + 1])]} лева`;
  106.                                         } else {
  107.                                             final += ` ${twenties[Number(numbers[i] - 1)]}`;
  108.                                             if (numbers[i + 1] === '2') {
  109.                                                 final += ' и два лева';
  110.                                             } else {
  111.                                                 final += ` и ${singles[Number(numbers[i + 1])]} лева`;
  112.                                             }
  113.                                         }
  114.                                     }
  115.                                 } else if (decimalPoint === 5 && i === 0) { // десетки хиляди
  116.                                     if (numbers[i] === '1') {
  117.                                         i++;
  118.                                         final += ` ${tens[Number(numbers[i])]}`;
  119.                                     } else if (numbers[i] !== '0') {
  120.                                         final += ` ${twenties[Number(numbers[i]) - 1]}`;
  121.                                         i++;
  122.                                         if (numbers[i] === '1') {
  123.                                             final += ` и една`;
  124.                                         } else if (numbers[i] === '2') {
  125.                                             final += ' и две';
  126.                                         } else if (numbers[i] !== '0') {
  127.                                            
  128.                                             final += ` и ${singles[Number(numbers[i])]}`;
  129.                                         }
  130.                                     }
  131.                                     final += ' хиляди';
  132.                                     i++;
  133.  
  134.                                     final += (numbers[i + 1] === '0' && numbers[i + 2] === '0') ? ' ' : 'и';
  135.                                     if (numbers[i] === '1') {
  136.                                         final += ' сто';
  137.                                     } else if (numbers[i] === '2') {
  138.                                         final += ' двеста';
  139.                                     } else if (numbers[i] === '3') {
  140.                                         final += ' триста';
  141.                                     } else {
  142.                                         final += ` ${singles[Number(numbers[i])]}` + `${numbers[i] !== '0' ? 'стотин' : ''}`;
  143.                                     }
  144.                                     i++;
  145.  
  146.                                     if (numbers[i] === '1') {
  147.                                         final += ` и ${tens[Number(numbers[i + 1])]}`;
  148.                                     } else if (numbers[i] !== '0') {
  149.                                         final += numbers[i + 1] === '0' ? ' и' : '';
  150.                                         final += ` ${twenties[Number(numbers[i] - 1)]}`;
  151.                                     }
  152.                                     i++;
  153.  
  154.                                     // единици
  155.                                     if (numbers[i - 1] !== '1') {
  156.                                         if (numbers[i] === '1') {
  157.                                             final += ' и един';
  158.                                         } else if (numbers[i] === '2') {
  159.                                             final += ' и два';
  160.                                         } else if (numbers[i] !== '0') {
  161.                                             final += ` и ${singles[Number(numbers[i])]}`;
  162.                                         }
  163.                                     }
  164.                                     final += ' лева';
  165.  
  166.                                     // хиляди
  167.                                 } else if (decimalPoint === 4 && i === 0) {
  168.                                     if (numbers[i] === '1') {
  169.                                         final += ' хиляда';
  170.                                     } else {
  171.                                         final += ` ${singles[Number(numbers[i])]} хиляди`;
  172.                                     }
  173.                                     i++;
  174.  
  175.                                     final += (numbers[i + 1] === '0' && numbers[i + 2] === '0') ? '' : ' и';
  176.                                     if (numbers[i] === '1') {
  177.                                         final += ' сто';
  178.                                     } else if (numbers[i] === '2') {
  179.                                         final += ' двеста';
  180.                                     } else if (numbers[i] === '3') {
  181.                                         final += ' триста';
  182.                                     } else {
  183.                                         final += ` ${singles[Number(numbers[i])]}` + `${numbers[i] !== '0' ? 'стотин' : ''}`;
  184.  
  185.                                     }
  186.                                     i++;
  187.  
  188.                                     if (numbers[i] === '1') {
  189.                                         final += ` и ${tens[Number(numbers[i + 1])]}`;
  190.                                     } else if (numbers[i] !== '0') {
  191.                                        
  192.                                         final += numbers[i + 1] === '0' ? ' и' : '';
  193.                                         final += ` ${twenties[Number(numbers[i] - 1)]}`;
  194.                                     }
  195.                                     i++;
  196.  
  197.                                     if (numbers[i - 1] !== '1') {
  198.                                         if (numbers[i] === '1') {
  199.                                             final += ' и един';
  200.                                         } else if (numbers[i] === '2') {
  201.                                             final += ' и два';
  202.                                         } else if (numbers[i] !== '0') {
  203.                                          
  204.                                             final += ` и ${singles[Number(numbers[i])]}`;
  205.                                         } else {
  206.  
  207.                                         }
  208.                                     }
  209.  
  210.                                     final += ' лева';
  211.  
  212.                                     // стотици
  213.                                 } else if (decimalPoint === 3 && i === 0) {
  214.                                     if (numbers[i] === '1') {
  215.                                         final += ' сто';
  216.                                     } else if (numbers[i] === '2') {
  217.                                         final += ' двеста';
  218.                                     } else if (numbers[i] === '3') {
  219.                                         final += ' триста';
  220.                                     } else {
  221.                                         final += ` ${singles[Number(numbers[i])]}` + `${numbers[i] !== '0' ? 'стотин' : ''}`;
  222.                                     }
  223.                                     i++;
  224.  
  225.                                     if (numbers[i] === '1') {
  226.                                         final += ` и ${tens[Number(numbers[i + 1])]}`;
  227.                                     } else if (numbers[i] !== '0') {
  228.                                         final += numbers[i + 1] === '0' ? ' и' : '';
  229.                                         final += ` ${twenties[Number(numbers[i] - 1)]}`;
  230.                                     }
  231.                                     i++;
  232.  
  233.                                     if (numbers[i - 1] !== '1') {
  234.                                         if (numbers[i] === '1') {
  235.                                             final += ' и един';
  236.                                         } else if (numbers[i] === '2') {
  237.                                             final += ' и два';
  238.                                         } else if (numbers[i] !== '0') {
  239.                                             final += ` и ${singles[Number(numbers[i])]}`;
  240.                                         }
  241.                                     }
  242.                                     final += ' лева';
  243.  
  244.                                     // десетки
  245.                                 } else if (decimalPoint === 2 && i === 0) {
  246.                                     if (numbers[i] === '1') {
  247.                                         final += ` ${tens[Number(numbers[i + 1])]}`;
  248.                                     } else if (numbers[i] !== '0') {
  249.                                         final += ` ${twenties[Number(numbers[i] - 1)]}`;
  250.                                     }
  251.                                     i++;
  252.  
  253.                                     if (numbers[i - 1] !== '1') {
  254.                                         if (numbers[i] === '1') {
  255.                                             final += '  и един';
  256.                                         } else if (numbers[i] === '2') {
  257.                                             final += ' и два';
  258.                                         } else if (numbers[i] !== '0') {
  259.                                             final += ` и ${singles[Number(numbers[i])]}`;
  260.                                         }
  261.                                     }
  262.                                     final += ' лева';
  263.                                 } else if (decimalPoint === 1 && i === 0) {
  264.                                     if (numbers[i] === '1') {
  265.                                         final += ' един';
  266.                                     } else if (numbers[i] === '2') {
  267.                                         final += ' два';
  268.                                     } else if (numbers[i] !== '0') {
  269.                                         final += ` ${singles[Number(numbers[i])]}`;
  270.                                     }
  271.                                     final += ' лева';
  272.                                 }
  273.  
  274.                             }
  275.                             if (decimalPoint !== price.length) {
  276.                                 final += ' и';
  277.                                 let lastIndex = numbers.length - 1;
  278.                                 let preLastIndex = numbers.length - 2;
  279.  
  280.                                 if (numbers[lastIndex] === '0' && numbers[preLastIndex] === '0') {
  281.                                     final += ' нула стотинки';
  282.                                 } else if (preLastIndex === decimalPoint) {
  283.                                     final += ` ${twenties[Number(numbers[lastIndex] - 1)]} стотинки`;
  284.                                 } else {
  285.                                     if (numbers[preLastIndex] === '1') {
  286.                                         final += ` ${tens[Number(numbers[lastIndex])]} стотинки`;
  287.                                     } else if (numbers[preLastIndex] !== '0') {
  288.                                         final += ` ${twenties[Number(numbers[preLastIndex] - 1)]}`;
  289.                                         if (numbers[lastIndex] === '1') {
  290.                                             final += ' и една стотинки';
  291.                                         } else {
  292.                                             final += numbers[lastIndex] === '0' ? ' стотинки' : ` и ${singles[Number(numbers[lastIndex])]} стотинки`;
  293.                                         }
  294.                                     } else {
  295.                                         if (numbers[lastIndex] === '1') {
  296.                                             final += ' една стотинка';
  297.                                         } else {
  298.                                             final += ` ${singles[Number(numbers[lastIndex])]} стотинки`;
  299.                                         }
  300.                                     }
  301.                                 }
  302.                             }
  303.  
  304.                             final += ' )';
  305.                         }
  306.                         return final.replace('.', ',');
  307.                     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement