예제 #1
0
        /// <summary>
        /// Записывает пропись суммы в заданной валюте в <paramref name="result"/> строчными буквами.
        /// </summary>
        public static StringBuilder Пропись(decimal сумма, Валюта валюта, StringBuilder result)
        {
            decimal целая   = Math.Floor(сумма);
            uint    дробная = (uint)((сумма - целая) * 100);

            Число.Пропись(целая, валюта.ОсновнаяЕдиница, result);
            return(ДобавитьКопейки(дробная, валюта, result));
        }
예제 #2
0
        /// <summary>
        /// Записывает пропись суммы в заданной валюте в <paramref name="result"/> строчными буквами.
        /// </summary>
        public static StringBuilder Пропись(double сумма, Валюта валюта, StringBuilder result)
        {
            double целая = Math.Floor(сумма);

            // Вынесение 100 за скобки позволяет избежать ошибки округления
            // например, когда сумма = 1234.51.
            uint дробная = (uint)(сумма * 100) - (uint)(целая * 100);

            Число.Пропись(целая, валюта.ОсновнаяЕдиница, result);
            return(ДобавитьКопейки(дробная, валюта, result));
        }
예제 #3
0
        private static StringBuilder ДобавитьКопейки(uint дробная, Валюта валюта, StringBuilder result)
        {
            result.Append(' ');

            // Эта строчка выполняется быстрее, чем следующая за ней закомментированная.
            result.Append(дробная.ToString("00"));
            //result.AppendFormat ("{0:00}", дробная);

            result.Append(' ');
            result.Append(Число.Согласовать(валюта.ДробнаяЕдиница, дробная));

            return(result);
        }
예제 #4
0
        private void ЧислоПрописью(СуммаПрописью.Валюта валюта)
        {
            try
            {
                Excel.Application excelApp       = Globals.ThisAddIn.Application as Microsoft.Office.Interop.Excel.Application;
                Excel.Range       selectionRange = excelApp.Selection as Excel.Range;
                if (selectionRange == null)
                {
                    System.Windows.Forms.MessageBox.Show("Выдзеленая вобласць не з'яўляецца дыяпазонам!", "Будзьце больш уважлівымі",
                                                         System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Warning);
                    return;
                }

                if (selectionRange.Value == null)
                {
                    return;
                }

                int count = selectionRange.Count;
                if (count > 1)
                {
                    System.Windows.Forms.MessageBox.Show("Выдзелена некалькі ячэяк. Выдзеліце адну і паўтарыце спробу.", "Будзьце больш уважлівымі",
                                                         System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Warning);
                    return;
                }
                else
                {
                    string  result = string.Empty;
                    string  s      = selectionRange.Value.ToString();
                    decimal value  = 0m;
                    if (Decimal.TryParse(s, out value))
                    {
                        string check = СуммаПрописью.Сумма.ПроверитьСумму(value);
                        if (check != null)
                        {
                            System.Windows.Forms.MessageBox.Show(check, "Будзьце больш уважлівымі",
                                                                 System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Warning);
                            return;
                        }

                        result = СуммаПрописью.Сумма.Пропись(value, валюта);
                        selectionRange.Value = result;
                    }
                }
            }
            catch (Exception e)
            {
                System.Windows.Forms.MessageBox.Show(String.Format("Узнікла памылка!\n{0}\n{1}", e.Message, e.StackTrace),
                                                     "Памылка", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Warning);
            }
        }
예제 #5
0
 /// <summary>
 /// Возвращает пропись заданной суммы.
 /// </summary>
 public static string Пропись(double n, Валюта валюта, Заглавные заглавные)
 {
     return(Число.ApplyCaps(Пропись(n, валюта, new StringBuilder()), заглавные));
 }
예제 #6
0
 /// <summary>
 /// Возвращает пропись заданной суммы строчными буквами.
 /// </summary>
 public static string Пропись(decimal n, Валюта валюта)
 {
     return(Число.ApplyCaps(Пропись(n, валюта, new StringBuilder()), Заглавные.Нет));
 }