public override void LoadData() { foreach (object obj in Params.Objects.Where(obj => obj != null)) { if (obj.GetType() == typeof(FormResultData)) { data = (FormResultData)obj; } } data.drivers.ReceivedResponse += reciveResponse; // обновим из базы статистические данные data.statistic = GlobalDb.GlobalBase.GetMoneyStatistic(); // moneySumm.Text = "Сумма денег в кассете: " + data.statistic.AllMoneySumm + " руб."; data.drivers.printer.StartPrint(data.drivers.printer.getNamePrinter()); // печатаем чек c инкассацией if (data.drivers.printer.prn.PrinterIsOpen) { data.drivers.printer.PrintCheckСollection(data.statistic); } data.log.Write(LogMessageType.Information, "=============================================================================="); data.log.Write(LogMessageType.Information, "INCASS: Сумма денег в кассете: " + data.statistic.AllMoneySumm + " руб."); data.log.Write(LogMessageType.Information, "INCASS: Сумма денег на чеках: " + data.statistic.BarCodeMoneySumm + " руб."); data.log.Write(LogMessageType.Information, "INCASS: Сумма денег на аккаунтах: " + data.statistic.AccountMoneySumm + " руб."); data.log.Write(LogMessageType.Information, "INCASS: Количество банкнот: " + data.statistic.CountBankNote + " руб."); data.log.Write(LogMessageType.Information, "INCASS: Оказано услуг: " + data.statistic.ServiceMoneySumm + " руб."); data.log.Write(LogMessageType.Information, "=============================================================================="); }
public override void LoadData() { foreach (object obj in Params.Objects.Where(obj => obj != null)) { if (obj.GetType() == typeof(FormResultData)) { data = (FormResultData)obj; Interval = data.timework * 60; } } Globals.DesignConfiguration.Settings.LoadPictureBox(pBxStopService, Globals.DesignConfiguration.Settings.ButtonRetToMain); timerService.Enabled = true; ServiceText.Text = "Идет оказание услуги. Осталось еще " + (Interval / 60).ToString() + " минуты и " + (Interval % 60).ToString() + " секунд"; // оказываем услугу пока так (перепутали устройства - поменял местами) if (data.numberCurrentDevice == (int)ControlDeviceEnum.dev3) { data.drivers.control.SendOpenControl((int)ControlDeviceEnum.dev3); data.drivers.control.SendOpenControl((int)ControlDeviceEnum.dev4); } else { data.drivers.control.SendOpenControl((int)ControlDeviceEnum.dev3); } data.drivers.ReceivedResponse += reciveResponse; }
public override void LoadData() { foreach (object obj in Params.Objects.Where(obj => obj != null)) { if (obj.GetType() == typeof(FormResultData)) { data = (FormResultData)obj; } } data.drivers.ReceivedResponse += reciveResponse; if (Globals.ClientConfiguration.Settings.ScreenServerType == 0) { Globals.DesignConfiguration.Settings.LoadPictureBox(ScreenSever, Globals.DesignConfiguration.Settings.ScreenSaver); } else { gifImage = new GifImage(Globals.GetPath(PathEnum.Image) + "\\" + Globals.DesignConfiguration.Settings.ScreenSaver); gifImage.ReverseAtEnd = false; //dont reverse at end } timer1.Enabled = true; timer2.Enabled = true; }
// запуск приложения public MainForm() { InitializeComponent(); // сначала база данных if (GlobalDb.GlobalBase.CreateDB()) { } else { } if (GlobalDb.GlobalBase.Connect()) { } else { } GlobalDb.GlobalBase.CreateTables(); GlobalDb.GlobalBase.FillSystemValues(); // запустим задачу очистки от логов директории ClearFilesTask = new ClearFilesControlServiceTask(Program.Log); result = new FormResultData(Program.Log); // инициализируем задачи result.drivers.InitAllTask(); }
public override void LoadData() { foreach (object obj in Params.Objects.Where(obj => obj != null)) { if (obj.GetType() == typeof(FormResultData)) { data = (FormResultData)obj; } } gifImage = new GifImage(Globals.GetPath(PathEnum.Image) + "\\" + Globals.DesignConfiguration.Settings.ButtonGetOxigen); gifImage.ReverseAtEnd = false; //dont reverse at end Globals.DesignConfiguration.Settings.LoadPictureBox(pBxReturnBack, Globals.DesignConfiguration.Settings.ButtonRetToMain); AmountServiceText.Text = "Внесено: 0 руб."; AmountServiceText.ForeColor = System.Drawing.Color.Red; SecondMessageText.Text = ""; LabelNameService2.Text = Globals.ClientConfiguration.Settings.services[data.numberService].caption; TextPayBill.LoadFile(Globals.GetPath(PathEnum.Text) + "\\WaitPayCheck.rtf"); // заменим обработчик событий data.drivers.ReceivedResponse += reciveResponse; // при старте сканер разбудим data.drivers.scaner.Request(ZebexCommandEnum.wakeUp); }
public override void LoadData() { foreach (object obj in Params.Objects.Where(obj => obj != null)) { if (obj.GetType() == typeof(FormResultData)) { data = (FormResultData)obj; } } timer1.Enabled = true; this.WindowState = FormWindowState.Maximized; data.drivers.ReceivedResponse += reciveResponse; if (data.retLogin != "") { numberTelefon.Text = "+7"; } else { numberTelefon.Text = ""; } numberTelefon.Text += data.retLogin; if (data.retLogin != "") { AmountText.Text = "Сумма: " + Globals.UserConfiguration.Amount + " руб."; } else { AmountText.Text = ""; } }
public override void LoadData() { foreach (object obj in Params.Objects.Where(obj => obj != null)) { if (obj.GetType() == typeof(FormResultData)) { data = (FormResultData)obj; } } }
public override void LoadData() { foreach (object obj in Params.Objects.Where(obj => obj != null)) { if (obj.GetType() == typeof(FormResultData)) { data = (FormResultData)obj; } } data.drivers.ReceivedResponse += reciveResponse; }
public override void LoadData() { foreach (object obj in Params.Objects.Where(obj => obj != null)) { if (obj.GetType() == typeof(FormResultData)) { data = (FormResultData)obj; } else if (obj.GetType() == typeof(string)) { NewUserinfo.Text = (string)obj; } } }
public override void LoadData() { foreach (object obj in Params.Objects.Where(obj => obj != null)) { if (obj.GetType() == typeof(FormResultData)) { data = (FormResultData)obj; } } rTBxHelp.LoadFile(Globals.GetPath(PathEnum.Text) + "\\HelpAccount.rtf"); if (Globals.ClientConfiguration.Settings.offModem == 1) { tableLayoutPanel11.Visible = false; } }
public override void LoadData() { foreach (object obj in Params.Objects.Where(obj => obj != null)) { if (obj.GetType() == typeof(FormResultData)) { data = (FormResultData)obj; } } Globals.DesignConfiguration.Settings.LoadPictureBox(pBxMainMenu, Globals.DesignConfiguration.Settings.ButtonRetToMain); Globals.DesignConfiguration.Settings.LoadPictureBox(pBxStartService, Globals.DesignConfiguration.Settings.ButtonStartServices); InstructionText.LoadFile(Globals.HelpFileName); data.drivers.ReceivedResponse += reciveResponse; }
public override void LoadData() { Nominal = "0"; foreach (object obj in Params.Objects.Where(obj => obj != null)) { if (obj.GetType() == typeof(FormResultData)) { data = (FormResultData)obj; } else if (obj.GetType() == typeof(string)) { Nominal = (string)obj; } else if (obj.GetType() == typeof(int)) { Amount = (int)obj; } else if (obj.GetType() == typeof(bool)) { check = (bool)obj; } } Globals.DesignConfiguration.Settings.LoadPictureBox(pBxTakeAwayMoney, Globals.DesignConfiguration.Settings.ButtonTakeAwayMoney); Globals.DesignConfiguration.Settings.LoadPictureBox(pBxreturnMoney, Globals.DesignConfiguration.Settings.ButtonreturnMoney); if (check) { label1.Text = "Вы внесли чек на сумму " + Amount + " руб."; } else { label1.Text = "Вы внесли купюру " + Nominal + " руб."; } if (data.retLogin != "" && Globals.ClientConfiguration.Settings.changeToAccount == 1) { scalableLabel1.Text = "Сдача будет зачислена на Ваш аккаунт"; } else { scalableLabel1.Text = "Ваша сдача будет на чеке"; } }
public override void LoadData() { foreach (object obj in Params.Objects.Where(obj => obj != null)) { if (obj.GetType() == typeof(FormResultData)) { data = (FormResultData)obj; } } data.drivers.ReceivedResponse += reciveResponse; timer1.Enabled = true; VideoPlayer.uiMode = "none"; VideoPlayer.settings.setMode("loop", true); VideoPlayer.URL = Globals.GetPath(PathEnum.Video) + "\\" + Globals.DesignConfiguration.Settings.ScreenSaverVideo; VideoPlayer.Ctlcontrols.play(); }
public override void LoadData() { foreach (object obj in Params.Objects.Where(obj => obj != null)) { if (obj.GetType() == typeof(FormResultData)) { data = (FormResultData)obj; } } Globals.DesignConfiguration.Settings.LoadPictureBox(pBxFinish, Globals.DesignConfiguration.Settings.ButtonRetToMain); FTimeWork = data.serv.timeLightUrn; timer1.Enabled = true; // включаем подсветку урны data.drivers.control.SendOpenControl((int)ControlDeviceEnum.light2); data.drivers.ReceivedResponse += reciveResponse; }
public override void LoadData() { foreach (object obj in Params.Objects.Where(obj => obj != null)) { if (obj.GetType() == typeof(FormResultData)) { data = (FormResultData)obj; } } data.drivers.ReceivedResponse += reciveResponse; Globals.DesignConfiguration.Settings.LoadPictureBox(pictureError, Globals.DesignConfiguration.Settings.ButtonFail); // список ошибок if (data.stage == WorkerStateStage.BillFull) { error.Text = "Ошибка E030"; } else if (data.stage == WorkerStateStage.ErrorBill) { error.Text = "Ошибка E020"; } else if (data.stage == WorkerStateStage.ResursEnd) { error.Text = "Ошибка E040"; } else if (data.stage == WorkerStateStage.ErrorControl) { error.Text = "Ошибка E010"; } else if (data.stage == WorkerStateStage.PaperEnd) { error.Text = "Ошибка E050"; } else if (data.stage == WorkerStateStage.ErrorPrinter) { error.Text = "Ошибка E060"; } }
public override void LoadData() { foreach (object obj in Params.Objects.Where(obj => obj != null)) { if (obj.GetType() == typeof(FormResultData)) { data = (FormResultData)obj; interval = data.timework; } } LabelNameService2.Text = Globals.ClientConfiguration.Settings.services[data.numberService].caption.ToLower(); Globals.DesignConfiguration.Settings.LoadPictureBox(pBxStartService, Globals.DesignConfiguration.Settings.ButtonStartServices); intervalLabel.Text = interval.ToString() + " мин"; pBxMinus.Load(Globals.GetPath(PathEnum.Image) + "\\back.png"); pBxPlus.Load(Globals.GetPath(PathEnum.Image) + "\\forward.png"); data.drivers.ReceivedResponse += reciveResponse; }
public override void LoadData() { foreach (object obj in Params.Objects.Where(obj => obj != null)) { if (obj.GetType() == typeof(FormResultData)) { data = (FormResultData)obj; } } Globals.DesignConfiguration.Settings.LoadPictureBox(pBxStart, Globals.DesignConfiguration.Settings.ButtonStartServices); LabelNameService2.Text = Globals.ClientConfiguration.Settings.services[data.numberService].caption.ToLower(); FTimeWork = data.timeRecognize; CurrentWork = 0; timer1.Enabled = true; // включаем подсветку расходников data.drivers.control.SendOpenControl((int)ControlDeviceEnum.light1); data.drivers.ReceivedResponse += reciveResponse; }
public override void LoadData() { foreach (object obj in Params.Objects.Where(obj => obj != null)) { if (obj.GetType() == typeof(FormResultData)) { data = (FormResultData)obj; } } data.log.Write(LogMessageType.Information, "========================НАЧАЛО ОБСЛУЖИВАНИЯ=========================="); if (Globals.ClientConfiguration.Settings.style == 1) { gifImage = new GifImage(Globals.GetPath(PathEnum.Image) + "\\" + Globals.DesignConfiguration.Settings.ButtonGetOxigen); gifImage.ReverseAtEnd = false; //dont reverse at end } else { Globals.DesignConfiguration.Settings.LoadPictureBox(pBxGiveOxigen, Globals.DesignConfiguration.Settings.ButtonGetOxigen_style1); } //Globals.DesignConfiguration.Settings.LoadPictureBox(pBxGiveOxigen, Globals.DesignConfiguration.Settings.ButtonGetOxigen); Globals.DesignConfiguration.Settings.LoadPictureBox(pBxReturnBack, Globals.DesignConfiguration.Settings.ButtonRetToMain); AmountServiceText.Text = "Внесено: 0 руб."; AmountServiceText.ForeColor = System.Drawing.Color.Red; SecondMessageText.Text = ""; LabelNameService2.Text = Globals.ClientConfiguration.Settings.services[data.numberService].caption; TextPayBill.LoadFile(Globals.GetPath(PathEnum.Text) + "\\WaitPayBill.rtf"); // сразу проверим - если авторизовались и достаточно денег на счете - сразу списываем деньги со счета if (data.retLogin != "") { int sum = GlobalDb.GlobalBase.GetUserMoney(data.CurrentUserId); data.log.Write(LogMessageType.Information, "ACCOUNT: На счету у пользователя " + data.retLogin + " " + sum + " руб."); if (sum >= data.serv.price) { // денег на счете достаточно data.log.Write(LogMessageType.Information, "ACCOUNT: Оказываем услугу с денег со счета..."); amount += data.serv.price; AmountServiceText.Text = "Внесено: " + data.serv.price + " руб."; AmountServiceText.ForeColor = System.Drawing.Color.Green; SecondMessageText.Text = "Остаток на счете: " + (sum - data.serv.price) + " руб."; data.log.Write(LogMessageType.Information, "ACCOUNT: Внесли достаточную для оказания услуги сумму со счета."); // все можно уже пользоваться pBxGiveOxigen.Enabled = true; moneyFixed = false; StopHardware = true; // обновим счет GlobalDb.GlobalBase.AddToAmount(data.CurrentUserId, 0 - data.serv.price); pBxReturnBack.Enabled = false; return; } else if (sum > 0) { // денег не достаточно - все равно списываем все подчистую data.log.Write(LogMessageType.Information, "ACCOUNT: Оказываем услугу с денег со счета..."); amount += sum; AmountServiceText.Text = "Внесено: " + sum + " руб."; SecondMessageText.Text = "Недостаточно денег для оказания услуги"; // обновим счет GlobalDb.GlobalBase.AddToAmount(data.CurrentUserId, 0 - sum); pBxReturnBack.Enabled = false; } } // // заменим обработчик событий data.drivers.ReceivedResponse += reciveResponse; if (data.serv.price == 0) { // может быть цена нулевая - и это демо режим - можно сразу без денег работать AmountServiceText.ForeColor = System.Drawing.Color.Green; pBxGiveOxigen.Enabled = true; data.log.Write(LogMessageType.Information, "WAIT BILL: работаем в демо режиме."); } else if (Globals.ClientConfiguration.Settings.offHardware == 0) { // перейдем в режим ожидания купюр if (data.drivers.CCNETDriver.NoConnectBill == false) { data.drivers.CCNETDriver.WaitBillEscrow(); data.log.Write(LogMessageType.Information, "WAIT BILL: запускаем режим ожидания купюр."); } // при старте сканер разбудим, если не отключена возможность оплаты чеком if (Globals.ClientConfiguration.Settings.offCheck != 1) { data.drivers.scaner.Request(ZebexCommandEnum.wakeUp); data.log.Write(LogMessageType.Information, "WAIT CHECK: запускаем режим ожидания чеков."); } } }
/// <summary> /// Проверка статистических данных /// </summary> private FormResultData CheckStatistic(FormResultData result) { result.stage = WorkerStateStage.None; if (result.statistic.CountBankNote >= Globals.ClientConfiguration.Settings.MaxCountBankNote) { // сообщим о необходимоcти изъятия денег result.drivers.modem.SendSMS(Globals.ClientConfiguration.Settings.SMSMessageNeedCollect, result.log); // Пора слать смс с необходимостью обслуживания result.stage = WorkerStateStage.BillFull; Program.Log.Write(LogMessageType.Error, "CHECK_STAT: необходимо изъять купюры. Предел " + Globals.ClientConfiguration.Settings.MaxCountBankNote + " сейчас " + result.statistic.CountBankNote); } // сообщение о ресурсе устройств DateTime dt = GlobalDb.GlobalBase.GetLastRefreshTime(); int count = 0; if (dt != null) { count = GlobalDb.GlobalBase.GetWorkTime(dt); } else { count = GlobalDb.GlobalBase.GetWorkTime(new DateTime(2000, 1, 1)); } if (count >= Globals.ClientConfiguration.Settings.limitServiceTime) { // ресурс выработали - сообщим об этом result.drivers.modem.SendSMS(Globals.ClientConfiguration.Settings.SMSMessageTimeEnd, result.log); // аппарат не работает result.stage = WorkerStateStage.ResursEnd; Program.Log.Write(LogMessageType.Error, "CHECK_STAT: выработали ресурс. Было установлено:" + Globals.ClientConfiguration.Settings.limitServiceTime + " проработали " + count); } // читаем состояние устройства byte[] res; res = result.drivers.control.GetStatusControl(Program.Log); if (res != null) { if (res[0] == 0) { result.drivers.modem.SendSMS("Отказ управляющего устройства", result.log); result.stage = WorkerStateStage.ErrorControl; Program.Log.Write(LogMessageType.Error, "CHECK_STAT: ошибка управляющего устройства."); } } // проверяем наличие бумаги в принтере //if(result.drivers.printer.status.CheckPaper(Program.Log) == PaperEnableEnum.PaperEnd) //{ // // бумага кончилась // if (Globals.ClientConfiguration.Settings.NoPaperWork == 0) // { // // с такой ошибкой не работаем // result.stage = WorkerStateStage.PaperEnd; // } // Program.Log.Write(LogMessageType.Error, "CHECK_STAT: кончилась бумага."); //} PrinterStatus status = result.drivers.printer.GetStatus(); if ((status & (PrinterStatus.PRINTER_STATUS_PAPER_OUT | PrinterStatus.PRINTER_STATUS_PAPER_JAM | PrinterStatus.PRINTER_STATUS_PAPER_PROBLEM | PrinterStatus.PRINTER_STATUS_DOOR_OPEN | PrinterStatus.PRINTER_STATUS_ERROR)) > 0) { // что то с бумагой if (Globals.ClientConfiguration.Settings.NoPaperWork == 0) { // с такой ошибкой не работаем result.stage = WorkerStateStage.PaperEnd; } if (result.PrinterError == false) { result.drivers.modem.SendSMS("Кончилась бумага", result.log); Program.Log.Write(LogMessageType.Error, "CHECK_STAT: кончилась бумага."); } result.PrinterError = true; } else if ((status & PrinterStatus.PRINTER_STATUS_OFFLINE) > 0) { if (Globals.ClientConfiguration.Settings.NoPaperWork == 0) { // нет связи с принтером result.stage = WorkerStateStage.ErrorPrinter; } if (result.PrinterError == false) { result.drivers.modem.SendSMS("Нет связи с принтером.", result.log); Program.Log.Write(LogMessageType.Error, "CHECK_STAT: нет связи с принтером."); } result.PrinterError = true; } else { if (result.PrinterError == true) { Program.Log.Write(LogMessageType.Error, "CHECK_STAT: ошибка принтера снялась."); } result.PrinterError = false; } return(result); }
/// <summary> /// Основной обработчик /// </summary> private void MainWorker() { if (Globals.admin) { Program.Log.Write(LogMessageType.Information, "MAIN WORK: Входим в режим настройки приложения."); result.drivers.InitAllDevice(); result = (FormResultData)FormManager.OpenForm <FormSettings>(this, FormShowTypeEnum.Dialog, FormReasonTypeEnum.Modify, result); Program.Log.Write(LogMessageType.Information, "MAIN WORK: Выходим из режима настройки приложения."); // на выход сразу - не надо в настроечном режиме продолжать работать Close(); return; } initDevice: if (Globals.ClientConfiguration.Settings.offHardware == 0) // если не отключено { // инициализация оборудования switch (result.drivers.InitAllDevice()) { case WorkerStateStage.None: break; case WorkerStateStage.NoCOMPort: //result = (FormResultData)FormManager.OpenForm<FormWelcomeUser>(this, FormShowTypeEnum.Dialog, FormReasonTypeEnum.Modify, result); Program.Log.Write(LogMessageType.Information, "MAIN WORK: Нет оборудования."); break; case WorkerStateStage.NeedSettingProgram: { Program.Log.Write(LogMessageType.Information, "MAIN WORK: Не все оборудование настроено верно."); result = (FormResultData)FormManager.OpenForm <FormSettings>(this, FormShowTypeEnum.Dialog, FormReasonTypeEnum.Modify, result); if (Globals.ClientConfiguration.Settings.offHardware == 0) { goto initDevice; } } break; } } else { } bool check = true; while (true) { try { // местный обработчик result.drivers.ReceivedResponse += reciveResponse; // забудем пользователя result.CurrentUserId = 0; result.stage = WorkerStateStage.None; result.retLogin = ""; result.retPassword = ""; // Проверка статистических данных - может пора заканчивать работать if (check) { result = CheckStatistic(result); } check = true; NoCheckStatistic: if (result.stage == WorkerStateStage.ErrorBill) { if (result.BillError == false) { result.drivers.modem.SendSMS("Bill acceptor неисправен.", result.log); Program.Log.Write(LogMessageType.Error, "MAIN WORK: Bill acceptor неисправен."); } if (Globals.ClientConfiguration.Settings.changeOn > 0) { // со сдачей - не будем показывать экран смерти - продолжим работать result.stage = WorkerStateStage.None; } result.BillError = true; } else if (result.stage == WorkerStateStage.BillFull) { if (result.BillError == false) { result.drivers.modem.SendSMS("Bill acceptor полон.", result.log); Program.Log.Write(LogMessageType.Error, "MAIN WORK: Bill acceptor полон."); } if (Globals.ClientConfiguration.Settings.changeOn > 0) { // со сдачей - не будем показывать экран смерти result.stage = WorkerStateStage.None; } result.BillError = true; } else { // это не ошибки приемника - с приемником все ок result.BillError = false; } if (result.stage != WorkerStateStage.None) { Program.Log.Write(LogMessageType.Information, "MAIN WORK: Аппарат не работает."); // аппарат не работает result = (FormResultData)FormManager.OpenForm <FormTemporallyNoWork>(this, FormShowTypeEnum.Dialog, FormReasonTypeEnum.Modify, result); if (result.stage == WorkerStateStage.ExitProgram) { // выход Close(); return; } else if (result.stage == WorkerStateStage.DropCassettteBill) { Program.Log.Write(LogMessageType.Information, "MAIN WORK: Выемка денег."); // выемка денег result = (FormResultData)FormManager.OpenForm <FormMoneyRecess>(this, FormShowTypeEnum.Dialog, FormReasonTypeEnum.Modify, result); if (result.stage == WorkerStateStage.ExitProgram) { // выход Close(); return; } } else if (result.stage == WorkerStateStage.BillErrorEnd) { } continue; } WaitClient: // ожидание клиента result = (FormResultData)FormManager.OpenForm <FormMainMenu>(this, FormShowTypeEnum.Dialog, FormReasonTypeEnum.Modify, result); if (result.stage == WorkerStateStage.ExitProgram) { // выход Close(); return; } else if (result.stage == WorkerStateStage.PaperEnd) { // ошибки принтера есть continue; } else if (result.stage == WorkerStateStage.ErrorPrinter) { // ошибки принтера есть continue; } else if (result.stage == WorkerStateStage.ErrorBill) { // ошибки купюроприемника goto NoCheckStatistic; } else if (result.stage == WorkerStateStage.BillFull) { // купюроприемник полон goto NoCheckStatistic; } else if (result.stage == WorkerStateStage.InterUser) { // авторизация пользователя result = (FormResultData)FormManager.OpenForm <UserRequest>(this, FormShowTypeEnum.Dialog, FormReasonTypeEnum.Modify, result); // проверим результат if ((result.stage == WorkerStateStage.AuthorizeUser || result.stage == WorkerStateStage.RegisterNewUser) && result.retLogin != "") { // авторизовались или внесли нового пользователя UserInfo ui = GlobalDb.GlobalBase.GetUserByName(result.retLogin, result.retPassword); if (ui != null && result.stage == WorkerStateStage.RegisterNewUser) { // Новый пользователь - сообщим об этом result = (FormResultData)FormManager.OpenForm <FormRegisterNewUser>(this, FormShowTypeEnum.Dialog, FormReasonTypeEnum.Modify, result, "Зарегистрировали нового пользователя: +7" + result.retLogin); if (result.stage == WorkerStateStage.ExitProgram) { // выход Close(); return; } } else if (ui != null) { // здесь покажем какого пользователя авторизовали } } else if (result.stage == WorkerStateStage.FindPhone) { result = (FormResultData)FormManager.OpenForm <FormRegisterNewUser>(this, FormShowTypeEnum.Dialog, FormReasonTypeEnum.Modify, result, "На Ваш телефон " + result.retLogin + " отправлен пароль"); if (result.stage == WorkerStateStage.ExitProgram) { // выход Close(); return; } continue; } else if (result.stage == WorkerStateStage.NotFindPhone) { continue; } else if (result.stage == WorkerStateStage.ErrorRegisterNewUser) { continue; } else if (result.stage == WorkerStateStage.NotAuthorizeUser) { continue; } else if (result.stage == WorkerStateStage.ExitProgram) { // выход Close(); return; } else if (result.stage == WorkerStateStage.MainScreen) { // сброс авторизации continue; } else if (result.stage == WorkerStateStage.TimeOut) { // тайм аут continue; } // нормально зарегистрировались goto WaitClient; } else if (result.stage == WorkerStateStage.ErrorControl) { Program.Log.Write(LogMessageType.Information, "MAIN WORK: Аппарат не работает."); // аппарат временно не работает result = (FormResultData)FormManager.OpenForm <FormTemporallyNoWork>(this, FormShowTypeEnum.Dialog, FormReasonTypeEnum.Modify, result); if (result.stage == WorkerStateStage.DropCassettteBill) { Program.Log.Write(LogMessageType.Information, "MAIN WORK: Выемка денег."); // выемка денег result = (FormResultData)FormManager.OpenForm <FormMoneyRecess>(this, FormShowTypeEnum.Dialog, FormReasonTypeEnum.Modify, result); if (result.stage == WorkerStateStage.ExitProgram) { // выход Close(); return; } } else if (result.stage == WorkerStateStage.ExitProgram) { // выход Close(); return; } continue; } else if (result.stage == WorkerStateStage.ChooseService) { // уходим на выбор услуг } else if (result.stage == WorkerStateStage.Rules || result.stage == WorkerStateStage.Philosof) { // ознакомление с правилами result = (FormResultData)FormManager.OpenForm <FormRules>(this, FormShowTypeEnum.Dialog, FormReasonTypeEnum.Modify, result); if (result.stage == WorkerStateStage.MainScreen) { // ознакомились - возвращаемся обратно check = false; continue; } else if (result.stage == WorkerStateStage.ExitProgram) { // выход Close(); return; } else if (result.stage == WorkerStateStage.ErrorBill) { // ошибки купюроприемника goto NoCheckStatistic; } else if (result.stage == WorkerStateStage.DropCassettteBill) { // выемка денег Program.Log.Write(LogMessageType.Information, "MAIN WORK: Выемка денег."); result = (FormResultData)FormManager.OpenForm <FormMoneyRecess>(this, FormShowTypeEnum.Dialog, FormReasonTypeEnum.Modify, result); if (result.stage == WorkerStateStage.EndDropCassette) { continue; } else if (result.stage == WorkerStateStage.ExitProgram) { // выход Close(); return; } } else if (result.stage == WorkerStateStage.ChooseService) { // уходим на выбор услуг check = false; } } else if (result.stage == WorkerStateStage.DropCassettteBill) { Program.Log.Write(LogMessageType.Information, "MAIN WORK: Выемка денег."); // выемка денег result = (FormResultData)FormManager.OpenForm <FormMoneyRecess>(this, FormShowTypeEnum.Dialog, FormReasonTypeEnum.Modify, result); if (result.stage == WorkerStateStage.EndDropCassette) { continue; } else if (result.stage == WorkerStateStage.ExitProgram) { // выход Close(); return; } } else if (result.stage == WorkerStateStage.TimeOut) { // по тайм ауту вышли в рекламу //result = (FormResultData)FormManager.OpenForm<FormWaitStage>(this, FormShowTypeEnum.Dialog, FormReasonTypeEnum.Modify, result); if (Globals.ClientConfiguration.Settings.ScreenServerType == 0 || Globals.ClientConfiguration.Settings.ScreenServerType == 1) { result = (FormResultData)FormManager.OpenForm <FormWaitClientGif>(this, FormShowTypeEnum.Dialog, FormReasonTypeEnum.Modify, result); } else { result = (FormResultData)FormManager.OpenForm <FormWaitClientVideo>(this, FormShowTypeEnum.Dialog, FormReasonTypeEnum.Modify, result); } if (result.stage == WorkerStateStage.ErrorBill) { // ошибки купюроприемника goto NoCheckStatistic; } else if (result.stage == WorkerStateStage.BillFull) { // купюроприемник полон goto NoCheckStatistic; } else if (result.stage == WorkerStateStage.PaperEnd) { // ошибки принтера есть continue; } else if (result.stage == WorkerStateStage.ErrorPrinter) { // ошибки принтера есть continue; } else if (result.stage == WorkerStateStage.DropCassettteBill) { Program.Log.Write(LogMessageType.Information, "MAIN WORK: Выемка денег."); // выемка денег result = (FormResultData)FormManager.OpenForm <FormMoneyRecess>(this, FormShowTypeEnum.Dialog, FormReasonTypeEnum.Modify, result); if (result.stage == WorkerStateStage.EndDropCassette) { continue; } else if (result.stage == WorkerStateStage.ExitProgram) { // выход Close(); return; } } else if (result.stage == WorkerStateStage.ErrorControl) { Program.Log.Write(LogMessageType.Information, "MAIN WORK: Аппарат временно не работает."); // аппарат временно не работает result = (FormResultData)FormManager.OpenForm <FormTemporallyNoWork>(this, FormShowTypeEnum.Dialog, FormReasonTypeEnum.Modify, result); if (result.stage == WorkerStateStage.ExitProgram) { // выход Close(); return; } else if (result.stage == WorkerStateStage.DropCassettteBill) { Program.Log.Write(LogMessageType.Information, "MAIN WORK: Выемка денег."); // выемка денег result = (FormResultData)FormManager.OpenForm <FormMoneyRecess>(this, FormShowTypeEnum.Dialog, FormReasonTypeEnum.Modify, result); if (result.stage == WorkerStateStage.ExitProgram) { // выход Close(); return; } } else if (result.stage == WorkerStateStage.BillErrorEnd) { } continue; } else { // вышли из рекламы check = false; continue; } } ChooseService: // выбор услуг result = (FormResultData)FormManager.OpenForm <FormChooseService1>(this, FormShowTypeEnum.Dialog, FormReasonTypeEnum.Modify, result); if (result.stage == WorkerStateStage.ExitProgram) { // выход Close(); return; } else if (result.stage == WorkerStateStage.ErrorBill) { // ошибки купюроприемника goto NoCheckStatistic; } else if (result.stage == WorkerStateStage.DropCassettteBill) { Program.Log.Write(LogMessageType.Information, "MAIN WORK: Выемка денег."); // выемка денег result = (FormResultData)FormManager.OpenForm <FormMoneyRecess>(this, FormShowTypeEnum.Dialog, FormReasonTypeEnum.Modify, result); if (result.stage == WorkerStateStage.EndDropCassette) { continue; } else if (result.stage == WorkerStateStage.ExitProgram) { // выход Close(); return; } } else if (result.stage == WorkerStateStage.WhatsDiff) { result = (FormResultData)FormManager.OpenForm <FormWhatsDiff>(this, FormShowTypeEnum.Dialog, FormReasonTypeEnum.Modify, result); if (result.stage == WorkerStateStage.ExitProgram) { // выход Close(); return; } else if (result.stage == WorkerStateStage.ErrorBill) { // ошибки купюроприемника goto NoCheckStatistic; } // вернемся в выбор услуги (уж не думал что goto буду использовать) goto ChooseService; } else if (result.stage == WorkerStateStage.TimeOut) { check = false; continue; } //if (Globals.ClientConfiguration.Settings.offCheck != 1) //{ // // выбор формы оплаты - если есть оплата чеком // result = (FormResultData)FormManager.OpenForm<FormChoosePay>(this, FormShowTypeEnum.Dialog, FormReasonTypeEnum.Modify, result); //} //else { // платим только деньгами и чеками result.stage = WorkerStateStage.PayBillService; } // загрузим выбранную услугу Service serv = Globals.ClientConfiguration.ServiceByIndex(result.numberService); result.serv = serv; Program.Log.Write(LogMessageType.Information, "MAIN WORK: Выбрали услугу: " + serv.caption); if (result.stage == WorkerStateStage.PayBillService) { // ожидание внесение денег result = (FormResultData)FormManager.OpenForm <FormWaitPayBill>(this, FormShowTypeEnum.Dialog, FormReasonTypeEnum.Modify, result); if (result.stage == WorkerStateStage.Fail || result.stage == WorkerStateStage.EndDropCassette) { // отказ - выход в выбор услуг goto ChooseService; } else if (result.stage == WorkerStateStage.ErrorBill) { // ошибки купюроприемника goto NoCheckStatistic; } else if (result.stage == WorkerStateStage.DropCassettteBill) { Program.Log.Write(LogMessageType.Information, "MAIN WORK: Выемка денег."); // выемка денег result = (FormResultData)FormManager.OpenForm <FormMoneyRecess>(this, FormShowTypeEnum.Dialog, FormReasonTypeEnum.Modify, result); if (result.stage == WorkerStateStage.EndDropCassette) { continue; } else if (result.stage == WorkerStateStage.ExitProgram) { // выход Close(); return; } } else if (result.stage == WorkerStateStage.ExitProgram) { // выход Close(); return; } else if (result.stage == WorkerStateStage.TimeOut) { check = false; continue; } } else if (result.stage == WorkerStateStage.PayCheckService) { // ожидание считывания чека - сюда не попадаем - отказались от оплаты только чеками result = (FormResultData)FormManager.OpenForm <FormWaitPayCheck>(this, FormShowTypeEnum.Dialog, FormReasonTypeEnum.Modify, result); if (result.stage == WorkerStateStage.Fail || result.stage == WorkerStateStage.EndDropCassette) { Program.Log.Write(LogMessageType.Information, "MAIN WORK: Отказались от оплаты."); // отказ - выход в начало continue; } else if (result.stage == WorkerStateStage.ExitProgram) { // выход Close(); return; } else if (result.stage == WorkerStateStage.DropCassettteBill) { Program.Log.Write(LogMessageType.Information, "MAIN WORK: Выемка денег."); // выемка денег result = (FormResultData)FormManager.OpenForm <FormMoneyRecess>(this, FormShowTypeEnum.Dialog, FormReasonTypeEnum.Modify, result); if (result.stage == WorkerStateStage.EndDropCassette) { continue; } else if (result.stage == WorkerStateStage.ExitProgram) { // выход Close(); return; } } else if (result.stage == WorkerStateStage.TimeOut) { Program.Log.Write(LogMessageType.Information, "MAIN WORK: Выход из оплаты по тайм ауту."); check = false; continue; } } else if (result.stage == WorkerStateStage.Fail) { // в начало continue; } else if (result.stage == WorkerStateStage.ExitProgram) { // выход Close(); return; } else if (result.stage == WorkerStateStage.TimeOut) { check = false; continue; } // оказание услуги //Device dev = serv.GetActualDevice(); // устройств пока всего 2 - поэтому решаем в лоб //if (dev != null) { result.timework = serv.timework; // пока так if (result.numberService == 0) { // первая услуга - устройство 3 result.numberCurrentDevice = (int)ControlDeviceEnum.dev3; } else { // вторая услуга - устройство 4 result.numberCurrentDevice = (int)ControlDeviceEnum.dev4; } result.timeRecognize = serv.timeRecognize; result.ServName = serv.caption; Program.Log.Write(LogMessageType.Information, "MAIN WORK: Начали оказывать услугу: " + serv.caption + " Забор аксессуаров."); // сначала включим подсветку и разрешим забрать аксессуары result = (FormResultData)FormManager.OpenForm <FormProgress>(this, FormShowTypeEnum.Dialog, FormReasonTypeEnum.Modify, result); if (result.stage == WorkerStateStage.ExitProgram) { // выход Close(); return; } else if (result.stage == WorkerStateStage.DropCassettteBill) { Program.Log.Write(LogMessageType.Information, "MAIN WORK: Выемка денег."); // выемка денег result = (FormResultData)FormManager.OpenForm <FormMoneyRecess>(this, FormShowTypeEnum.Dialog, FormReasonTypeEnum.Modify, result); if (result.stage == WorkerStateStage.EndDropCassette) { continue; } else if (result.stage == WorkerStateStage.ExitProgram) { // выход Close(); return; } } // теперь собственно окажем услугу - сначала спросим надо ли result = (FormResultData)FormManager.OpenForm <FormProvideServiceStart>(this, FormShowTypeEnum.Dialog, FormReasonTypeEnum.Modify, result); if (result.stage == WorkerStateStage.ExitProgram) { // выход Close(); return; } else if (result.stage == WorkerStateStage.Fail) { // услуга не нужна continue; } else if (result.stage == WorkerStateStage.DropCassettteBill) { Program.Log.Write(LogMessageType.Information, "MAIN WORK: Выемка денег."); // выемка денег result = (FormResultData)FormManager.OpenForm <FormMoneyRecess>(this, FormShowTypeEnum.Dialog, FormReasonTypeEnum.Modify, result); if (result.stage == WorkerStateStage.EndDropCassette) { continue; } else if (result.stage == WorkerStateStage.ExitProgram) { // выход Close(); return; } } else if (result.stage == WorkerStateStage.TimeOut) { continue; } Program.Log.Write(LogMessageType.Information, "MAIN WORK: Начали оказывать услугу: " + serv.caption); // Будем оказывать услугу result = (FormResultData)FormManager.OpenForm <FormProvideService>(this, FormShowTypeEnum.Dialog, FormReasonTypeEnum.Modify, result); if (result.stage == WorkerStateStage.Fail) { // отказались от услуги } // Услугу оказали - выбросим расходники result = (FormResultData)FormManager.OpenForm <FormMessageEndService>(this, FormShowTypeEnum.Dialog, FormReasonTypeEnum.Modify, result); if (result.stage == WorkerStateStage.DropCassettteBill) { Program.Log.Write(LogMessageType.Information, "MAIN WORK: Выемка денег."); // выемка денег result = (FormResultData)FormManager.OpenForm <FormMoneyRecess>(this, FormShowTypeEnum.Dialog, FormReasonTypeEnum.Modify, result); if (result.stage == WorkerStateStage.EndDropCassette) { continue; } else if (result.stage == WorkerStateStage.ExitProgram) { // выход Close(); return; } } Program.Log.Write(LogMessageType.Information, "MAIN WORK: Закончили оказывать услугу: " + serv.caption); Program.Log.Write(LogMessageType.Information, "MAIN WORK: Проработали: " + result.timework); Program.Log.Write(LogMessageType.Information, "========================КОНЕЦ ОБСЛУЖИВАНИЯ==========================="); // пишем в базу строку с временем работы GlobalDb.GlobalBase.WriteWorkTime(serv.id, result.numberCurrentDevice, result.timework); } //else //{ // MessageBox.Show("Услуга " + serv.caption + " не может быть предоставлена"); //} } catch (Exception exp) { // вернемся к исходной позиции - какая то ошибка Program.Log.Write(LogMessageType.Error, "MAIN WORK: Ошибка."); Program.Log.Write(LogMessageType.Error, "MAIN WORK: " + exp.GetDebugInformation()); // все переинициализируем result = new FormResultData(Program.Log); // инициализируем задачи result.drivers.InitAllTask(); // инициализируем устройства result.drivers.InitAllDevice(); } } }
private void CreditMoney(ServiceClientResponseEventArgs e) { pBxReturnBack.Enabled = true; // блокировать возврат не будем - можем ведь чеком сдачу давать SecondMessageText.Text = ""; lock (Params) { try { data.log.Write(LogMessageType.Information, "SCANER: Обработаем получение чека"); // сбросим таймаут Timeout = 0; // прочли чек // поищем такой чек CheckInfo info = GlobalDb.GlobalBase.GetCheckByStr((string)e.Message.Content); data.log.Write(LogMessageType.Information, "WAIT CHECK: Внесли чек номер " + (string)e.Message.Content); if (info == null) { // нет такого чека SecondMessageText.Text = "Чек не существует."; if (amount == 0) { pBxReturnBack.Enabled = true; } data.log.Write(LogMessageType.Information, "WAIT CHECK: Чек не существует."); return; } if (info.active == true) { // чек погашен - отклоним его SecondMessageText.Text = "Чек уже был использован ранее"; if (amount == 0) { pBxReturnBack.Enabled = true; } data.log.Write(LogMessageType.Information, "WAIT CHECK: Чек уже был использован ранее."); return; } int count = info.Amount; if (count < data.serv.price) { // на чеке слишком мало денег - пока так - может в будущем и по другому сделаем AmountServiceText.Text = "Недостаточно денег"; SecondMessageText.Text = "Остаток на чеке: " + count + " руб."; data.log.Write(LogMessageType.Information, "WAIT CHECK: Недостаточно денег."); data.log.Write(LogMessageType.Information, "WAIT CHECK: Остаток на чеке: " + count + " руб."); return; } amount += count; // всегда со сдачей - сразу забираем деньгу c чека - никого не спрашиваем - гасим текущий чек - распечатаем новый GlobalDb.GlobalBase.FixedCheck(info.Id); // внесли достаточную для услуги сумму data.log.Write(LogMessageType.Information, "WAIT CHECK: Внесли достаточную для оказания услуги сумму."); // сдача int diff = 0; if (Globals.ClientConfiguration.Settings.changeOn > 0) { // посчитаем размер сдачи diff = amount - data.serv.price; // денег не достаточно - сдачи нет if (diff < 0) { diff = 0; } // сдача на чек if (amount > data.serv.price) { ChooseChangeEnum ch = ChooseChangeEnum.None; if (Globals.ClientConfiguration.Settings.changeToAccount == 1 && Globals.ClientConfiguration.Settings.changeToCheck == 1) { // тут надо решить как выдать сдачу - спросим пользователя ch = (ChooseChangeEnum)FormManager.OpenForm <FormChooseChange>(this, FormShowTypeEnum.Dialog, FormReasonTypeEnum.Modify, diff.ToString()); } else if (Globals.ClientConfiguration.Settings.changeToAccount == 1) { ch = ChooseChangeEnum.ChangeToAccount; } else if (Globals.ClientConfiguration.Settings.changeToCheck == 1) { ch = ChooseChangeEnum.ChangeToCheck; } if (ch == ChooseChangeEnum.ChangeToAccount) { data.log.Write(LogMessageType.Information, "WAIT CHECK: сдача на аккаунт. Сумма сдачи " + diff); // заносим в аккаунт - если не авторизовались - нужна авторизация в аккаунт if (data.CurrentUserId == 0) { // форма регистрации data = (FormResultData)FormManager.OpenForm <UserRequest>(this, FormShowTypeEnum.Dialog, FormReasonTypeEnum.Modify, data); } // запомним сколько внесли на аккаунт data.statistic.AccountMoneySumm += diff; difftoAccount += diff; // внесем на счет GlobalDb.GlobalBase.AddToAmount(data.CurrentUserId, diff); } else { // выдаем чек data.log.Write(LogMessageType.Information, "WAIT CHECK: сдача на чек. Сумма сдачи " + diff); // запомним сколько выдали на чеке - печатаем новый чек - часть денег отоварили data.statistic.BarCodeMoneySumm -= data.serv.price; difftoCheck += diff; // запомним такой чек string check = CheckHelper.GetUniqueNumberCheck(12); GlobalDb.GlobalBase.AddToCheck(data.CurrentUserId, diff, check); data.drivers.printer.StartPrint(data.drivers.printer.getNamePrinter()); int numberCheck = GlobalDb.GlobalBase.GetCurrentNumberDeliveryCheck(); // и напечатем его data.drivers.printer.PrintHeader(1); data.drivers.printer.PrintBarCode(check, diff); data.drivers.printer.PrintFooter(); data.drivers.printer.EndPrint(); GlobalDb.GlobalBase.SetNumberDeliveryCheck(numberCheck + 1); } } } // напишем на экране if (amount >= data.serv.price) { AmountServiceText.Text = "ПРИНЯТО: " + data.serv.price + " руб."; if (diff > 0) { SecondMessageText.Text = "Остаток на чеке: " + diff + " руб."; } else { SecondMessageText.Text = ""; } } else { AmountServiceText.Text = "ПРИНЯТО: " + amount + " руб."; SecondMessageText.Text = "Недостаточно денег для оказания услуги."; } data.log.Write(LogMessageType.Information, "WAIT CHECK: Внесено " + amount + " руб."); // деньги внесли - нет пути назад TimeOutTimer.Enabled = false; if (amount >= data.serv.price) { AmountServiceText.ForeColor = System.Drawing.Color.Green; pBxGiveOxigen.Enabled = true; } } catch (Exception exp) { data.log.Write(LogMessageType.Error, "WAIT CHECK: ошибка управляющего устройства."); data.log.Write(LogMessageType.Error, "WAIT CHECK: " + exp.ToString()); // при ошибке сканер усыпим data.drivers.scaner.Request(ZebexCommandEnum.sleep); } } }