using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes; using word = Microsoft.Office.Interop.Word; namespace MassageSalon { public partial class MainWindow : Window { private const decimal PriceNeckZone = 600m; private const decimal PriceAntiCellulite = 950m; private const decimal PriceRelaxingMassage = 400m; // Объявляем переменные как поля класса private decimal sumAccepted; private decimal totalCost; private decimal change; private decimal discount; public MainWindow() { InitializeComponent(); } private void Rasschet_Click(object sender, RoutedEventArgs e) { try { // Считываем сумму, введенную пользователем sumAccepted = decimal.Parse(SummOkayBox.Text); // Считываем скидку, введенную пользователем discount = decimal.Parse(SkidkaBox.Text); // Рассчитываем общую стоимость totalCost = 0; if (Check1.IsChecked == true) // Воротниковая зона { totalCost += PriceNeckZone; } if (Check2.IsChecked == true) // Антицеллюлитный массаж { totalCost += PriceAntiCellulite; } if (Check3.IsChecked == true) // Расслабляющий массаж { totalCost += PriceRelaxingMassage; } // Применяем скидку totalCost -= totalCost * (discount / 100); // Выводим итоговую стоимость ItogoBox.Text = totalCost.ToString("F2"); // Рассчитываем сдачу change = sumAccepted - totalCost; if (change < 0) { MessageBox.Show("Сумма, переданная клиентом, недостаточна для оплаты."); return; } // Выводим сдачу MessageBox.Show($"Сдача клиенту: {change:F2} руб."); // Устанавливаем признак, что услуга была получена if (Check1.IsChecked == true) Check1.Content += " (Получена)"; if (Check2.IsChecked == true) Check2.Content += " (Получена)"; if (Check3.IsChecked == true) Check3.Content += " (Получена)"; } catch (FormatException) { MessageBox.Show("Пожалуйста, введите корректные числовые значения для суммы и скидки."); } catch (Exception ex) { MessageBox.Show($"Произошла ошибка: {ex.Message}"); } } public void Button_Click(object sender, RoutedEventArgs e) { string date = DateTime.Now.ToShortDateString(); word.Document document = null; word.Application app = new word.Application(); string putword = Environment.CurrentDirectory + @"/Check.docx"; document = app.Documents.Add(putword); document.Activate(); word.Bookmarks bookm = document.Bookmarks; word.Range range; // Заполняем данные для чека string[] data = new string[7] { sumAccepted.ToString("F2"), date, totalCost.ToString("F2"), change.ToString("F2"), discount.ToString("F2"), PriceNeckZone.ToString() + " руб.", "1" }; int i = 0; foreach (word.Bookmark mark in bookm) { range = mark.Range; range.Text = data[i]; i++; } // Сохраняем документ string filePath = System.IO.Path.Combine(Environment.CurrentDirectory, "Чек.docx"); document.SaveAs2(filePath, word.WdSaveFormat.wdFormatXMLDocument); // Указываем формат .docx MessageBox.Show("Чек сохранен по пути: " + filePath); // Закрываем документ и приложение document.Close(); app.Quit(); } private void Check1_Checked(object sender, RoutedEventArgs e) { } } }