/// <summary> /// Метод обрабатывает нажатие кнопки Прочитать денежные регистры. /// Отвечает за вывод денежных регистров в список формы. /// </summary> /// <param name="sender">Объект, вызвавщий метод.</param> /// <param name="e">Аргументы события.</param> private void readCashRegB_Click(object sender, EventArgs e) { using (IFiscalRegistrar fr = CurrentHardware.GetFiscalRegistrar()) { if (fr.CheckConnect() == 0) { int i = 1; RegistrerItem ri;//объект строки регистра cashRegLB.Items.Clear(); //читать регистры пока не прочитаны все while (true) { ri = fr.GetCashRegItem(i); if (ri != null) { //добавление записи в поле на форме cashRegLB.Items.Add($"{ri.Number}. {ri.Name} : {ri.Content}"); i++; } else { break; } } } } }
/// <summary> /// Метод обрабатывает нажатие кнопки Отчет по банковским картам. /// Отвечает за печать и сохранение z-отчёта по банковским картам. /// </summary> /// <param name="sender">Объект, вызвавщий метод.</param> /// <param name="e">Аргументы события.</param> private void отчётыПоБанковскимКартамToolStripMenuItem_Click(object sender, EventArgs e) { if (!CheckPassword()) { MessageBox.Show("Неверный пароль!"); return; } using (ITerminal terminal = CurrentHardware.GetTerminal()) { using (IFiscalRegistrar fr = CurrentHardware.GetFiscalRegistrar()) { //проверка связи с терминалом if (terminal.IsEnabled()) { //проверка связи с фискальным регистратором if (fr.CheckConnect() == 0) { //формирование отчета terminal.CloseDay(); fr.Print(terminal.GetReceipt(), terminal.GetReceiptName());//печать чека терминала } } else { MessageBox.Show("Терминал не подключен! Проверьте подключение и повторите попытку."); } } } }
/// <summary> /// Метод обрабатывает нажатие кнопки Проверка связи фискального регистратора. /// Отвечает за проверку связи с фискальным регистратором. /// </summary> /// <param name="sender">Объект, вызвавщий метод.</param> /// <param name="e">Аргументы события.</param> private void checkConnectB_Click(object sender, EventArgs e) { using (IFiscalRegistrar fr = CurrentHardware.GetFiscalRegistrar()) { if (fr.CheckConnect() == 0) { MessageBox.Show("Фискальный регистратор подключен!"); } } }
/// <summary> /// Метод обрабатывает нажатие кнопкипечать операционных регистров. /// Отвечает за печать и сохранение операционных регистров ККТ. /// </summary> /// <param name="sender">Объект, вызвавщий метод.</param> /// <param name="e">Аргументы события.</param> private void printOperationRegB_Click(object sender, EventArgs e) { using (IFiscalRegistrar fr = CurrentHardware.GetFiscalRegistrar()) { if (fr.CheckConnect() == 0) { fr.PrintOperationReg(); //Печать операционных регистров } } }
/// <summary> /// Конструктор класса. /// Выполняет инициализацию формы, устанавливает путь к рабочей папке /// и вызывает метод проверси состояния ККТ. /// </summary> public Menu() { InitializeComponent(); //путь к рабочей папке AppDomain.CurrentDomain.SetData("DataDirectory", Application.StartupPath); using (IFiscalRegistrar fr = CurrentHardware.GetFiscalRegistrar()) { if (fr.CheckConnect() == 0) { fr.PrepareReceipt(); } } }
/// <summary> /// Метод обрабатывает нажатие кнопки х-отчёт без Гашения. /// Отвечает за печать и сохранение х-отчёта без Гашения ККТ. /// </summary> /// <param name="sender">Объект, вызвавщий метод.</param> /// <param name="e">Аргументы события.</param> private void хотчётбезГашенияToolStripMenuItem_Click(object sender, EventArgs e) { if (!CheckPassword()) { MessageBox.Show("Неверный пароль!"); return; } using (IFiscalRegistrar fr = CurrentHardware.GetFiscalRegistrar()) { if (fr.CheckConnect() == 0) { fr.PrintXReport(); } } }
/// <summary> /// Метод обрабатывает нажатие кнопки Наличные. /// Отвечает за оплату покупки наличными. /// </summary> /// <param name="sender">Объект, вызвавщий метод</param> /// <param name="e">Аргументы события</param> private void cashB_Click(object sender, EventArgs e) { if (decimal.Parse(moneyTB.Text) < CurrentReceipt.Summa) { MessageBox.Show("Вносимая сумма не может быть меньше суммы по чеку!"); return; } try { messageL.Text = "Оплата наличными"; this.Enabled = false; //блокировка формы panel1.Visible = true; //показать панель сообщений using (IFiscalRegistrar fr = CurrentHardware.GetFiscalRegistrar()) { if (fr.CheckConnect() == 0) { messageL.Text = "Печать чека"; CurrentReceipt.Payment = 1; InsertData(); //замена суммы по чеку на сумму вносимых наличных CurrentReceipt.Summa = decimal.Parse(moneyTB.Text); //печать товарного чека if (fr.PrintReceipt(CurrentReceipt) == 0) { messageL.Text = "Успешно"; MarkAsPaid(); Close(); } } } panel1.Visible = false; //убрать панель сообщений this.Enabled = true; //разблокировать форму } catch (Exception ex) { MessageBox.Show(TextFormat.GetExceptionMessage(ex)); } }
/// <summary> /// Метод обрабатывает нажатие кнопки Ввод. /// Отвечает за фиксирование внесения или выплаты указанной суммы. /// </summary> /// <param name="sender">Объект, вызвавщий метод</param> /// <param name="e">Аргументы события</param> private void enterB_Click(object sender, EventArgs e) { decimal summ, res; if (summaTB.Text != "") { summ = decimal.Parse(summaTB.Text); if (summ > 0) { using (IFiscalRegistrar fr = CurrentHardware.GetFiscalRegistrar()) { if (fr.CheckConnect() == 0) { //Вненение или Выплата, относительно назначения формы if (IsCashIncome) { res = fr.CashIncome(summ); } else { res = fr.CashOutcome(summ); } Close(); } } } else { MessageBox.Show("Сумма должна быть больше 0!"); } } else { MessageBox.Show("Введите сумму!"); } }
/// <summary> /// Метод обрабатывает нажатие кнопки Банковская карта. /// Отвечает за оплату покупки по банковской карте. /// </summary> /// <param name="sender">Объект, вызвавщий метод</param> /// <param name="e">Аргументы события</param> private void nonCashB_Click(object sender, EventArgs e) { try { messageL.Text = "Идёт процесс оплаты через терминал"; this.Enabled = false; //блокировка формы panel1.Visible = true; //показать панель сообщений using (ITerminal terminal = CurrentHardware.GetTerminal()) { using (IFiscalRegistrar fr = CurrentHardware.GetFiscalRegistrar()) { if (terminal.IsEnabled()) { if (fr.CheckConnect() == 0) { //если оплата через терминал успешна if (terminal.Purchase(CurrentReceipt.Summa) == 0) { messageL.Text = "Оплата успешно!"; terminal.Unconfirmed(); //если печать чека терминала успешна if (terminal.GetReceipt() != null && fr.Print(terminal.GetReceipt(), terminal.GetReceiptName()) == 0) { messageL.Text = "Печать чеков"; CurrentReceipt.Payment = 2; InsertData(); //печать товарного чека if (fr.PrintReceipt(CurrentReceipt, null) == 0) { messageL.Text = "Успешно"; terminal.Confirmed(); MarkAsPaid(); Close(); } else { //???????????????????????? MessageBox.Show("Товарный чек не напечатан! Отмена транзакции."); terminal.CancelTransaction(); } } else { MessageBox.Show("Чек терминала не напечатан! Отмена операции."); terminal.CancelTransaction(); } } } } else { MessageBox.Show("Терминал не подключен! Проверьте подключение и повторите попытку."); } } } panel1.Visible = false; //убрать панель сообщений this.Enabled = true; //разблокировать форму } catch (Exception ex) { MessageBox.Show(TextFormat.GetExceptionMessage(ex)); } }