Ejemplo n.º 1
0
        private void reciveResponse(object sender, ServiceClientResponseEventArgs e)
        {
            if (InvokeRequired)
            {
                BeginInvoke(new ServiceClientResponseEventHandler(reciveResponse), sender, e);
                return;
            }

            switch (e.Message.Event)
            {
            case DeviceEvent.DropCassetteBillAcceptor:

                break;

            case DeviceEvent.DropCassetteFullBillAcceptor:

                break;

            case DeviceEvent.BillAcceptorError:

                break;

            default:
                // другие события
                if (!((string)e.Message.Content).Contains("Drop Cassette out of position"))
                {
                    // не выемка
                    data.stage = WorkerStateStage.EndDropCassette;
                    this.Close();
                }
                break;
            }
        }
Ejemplo n.º 2
0
        private void reciveResponse(object sender, ServiceClientResponseEventArgs e)
        {
            if (InvokeRequired)
            {
                BeginInvoke(new ServiceClientResponseEventHandler(reciveResponse), sender, e);
                return;
            }

            switch (e.Message.Event)
            {
            case DeviceEvent.DropCassetteBillAcceptor:
            {
                data.stage = WorkerStateStage.DropCassettteBill;
                this.Close();
            }
            break;

            case DeviceEvent.DropCassetteFullBillAcceptor:

                break;

            case DeviceEvent.BillAcceptorError:

                break;
            }
        }
Ejemplo n.º 3
0
        private void reciveResponse(object sender, ServiceClientResponseEventArgs e)
        {
            if (InvokeRequired)
            {
                BeginInvoke(new ServiceClientResponseEventHandler(reciveResponse), sender, e);
                return;
            }

            if (data.log != null)
            {
                data.log.Write(LogMessageType.Debug, "WAIT CHECK: Событие: " + e.Message.Content + ".");
            }

            switch (e.Message.Event)
            {
            case DeviceEvent.Scaner:
                CreditMoney(e);
                break;

            case DeviceEvent.DropCassetteBillAcceptor:
            {
                data.stage = WorkerStateStage.DropCassettteBill;
                data.log.Write(LogMessageType.Debug, "WAIT CHECK: Вытащили купюроприемник.");

                this.Close();
            }
            break;

            default:
                // Остальные события нас не интересуют
                break;
            }
        }
Ejemplo n.º 4
0
 private void reciveResponse(object sender, ServiceClientResponseEventArgs e)
 {
     if (InvokeRequired)
     {
         BeginInvoke(new ServiceClientResponseEventHandler(reciveResponse), sender, e);
         return;
     }
 }
Ejemplo n.º 5
0
        private void reciveResponse(object sender, ServiceClientResponseEventArgs e)
        {
            if (InvokeRequired)
            {
                BeginInvoke(new ServiceClientResponseEventHandler(reciveResponse), sender, e);
                return;
            }

            switch (e.Message.Event)
            {
            case DeviceEvent.DropCassetteBillAcceptor:
            {
                data.stage = WorkerStateStage.DropCassettteBill;
                this.Close();
            }
            break;

            case DeviceEvent.DropCassetteFullBillAcceptor:

                break;

            case DeviceEvent.BillAcceptorError:

                break;

            case DeviceEvent.ConnectBillErrorEnd:
                // связь с приемником возобновилась - ошибки ушли
            {
                data.stage = WorkerStateStage.BillErrorEnd;
                this.Close();
            }
            break;

            default:
                // другие события
                if (data.stage == WorkerStateStage.BillFull)
                {
                    //// только если вошли сюда с полным баком денег
                    //if (!((string)e.Message.Content).Contains("Drop Cassette out of position")
                    //|| !((string)e.Message.Content).Contains("Drop Cassette Full"))
                    //{
                    //    // не выемка
                    //    data.stage = WorkerStateStage.EndBillFull;
                    //    this.Close();
                    //}
                }
                else if (data.stage == WorkerStateStage.ErrorBill)
                {
                }
                else if (data.stage == WorkerStateStage.ResursEnd)
                {
                }
                else if (data.stage == WorkerStateStage.ErrorControl)
                {
                }
                break;
            }
        }
Ejemplo n.º 6
0
        private void LabelNameService1_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.Alt & e.KeyCode == Keys.F4)
            {
                data.stage = WorkerStateStage.ExitProgram;
            }
            else if (e.Alt & e.KeyCode == Keys.F5)
            {
                if (Globals.IsDebug)
                {
                    // в дебаге - вносим деньги руками
                    Drivers.Message message = new Drivers.Message();

                    message.Content = new BillNominal();

                    ((BillNominal)message.Content).nominalNumber = 3;
                    ((BillNominal)message.Content).Denomination  = "500";

                    ServiceClientResponseEventArgs e1 = new ServiceClientResponseEventArgs(message);

                    CreditMoney(e1);
                }
            }
            else if (e.Alt & e.KeyCode == Keys.F6)
            {
                if (Globals.IsDebug)
                {
                    // в дебаге - вносим деньги руками
                    Drivers.Message message = new Drivers.Message();

                    message.Content = new BillNominal();

                    ((BillNominal)message.Content).nominalNumber = 3;
                    ((BillNominal)message.Content).Denomination  = "50";

                    ServiceClientResponseEventArgs e1 = new ServiceClientResponseEventArgs(message);

                    CreditMoney(e1);
                }
            }
            else if (e.Alt & e.KeyCode == Keys.F7)
            {
                if (Globals.IsDebug)
                {
                    // в дебаге - вносим деньги руками
                    Drivers.Message message = new Drivers.Message();

                    message.Content = "0000000000";

                    ServiceClientResponseEventArgs e1 = new ServiceClientResponseEventArgs(message);

                    CreditCheck(e1);
                }
            }
        }
Ejemplo n.º 7
0
        private void FormWaitPayCheck_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.Alt & e.KeyCode == Keys.F4)
            {
                data.stage = WorkerStateStage.ExitProgram;
                this.Close();
            }
            else if (e.Alt & e.KeyCode == Keys.F5)
            {
                if (Globals.IsDebug)
                {
                    // в дебаге - вносим деньги руками
                    Drivers.Message message = new Drivers.Message();

                    message.Content = "834141186725";

                    ServiceClientResponseEventArgs e1 = new ServiceClientResponseEventArgs(message);

                    CreditMoney(e1);
                }
            }
            else if (e.Alt & e.KeyCode == Keys.F6)
            {
                if (Globals.IsDebug)
                {
                    // в дебаге - вносим деньги руками
                    Drivers.Message message = new Drivers.Message();

                    message.Content = "047759717704";

                    ServiceClientResponseEventArgs e1 = new ServiceClientResponseEventArgs(message);

                    CreditMoney(e1);
                }
            }
            else if (e.Alt & e.KeyCode == Keys.F7)
            {
                if (Globals.IsDebug)
                {
                    // в дебаге - вносим деньги руками
                    Drivers.Message message = new Drivers.Message();

                    message.Content = "0000000000";

                    ServiceClientResponseEventArgs e1 = new ServiceClientResponseEventArgs(message);

                    CreditMoney(e1);
                }
            }
        }
Ejemplo n.º 8
0
        private void reciveResponse(object sender, ServiceClientResponseEventArgs e)
        {
            if (InvokeRequired)
            {
                BeginInvoke(new ServiceClientResponseEventHandler(reciveResponse), sender, e);
                return;
            }

            if (data.log != null)
            {
                data.log.Write(LogMessageType.Debug, "MAIN MENU: Событие: " + e.Message.Content + ".");
            }

            switch (e.Message.Event)
            {
            case DeviceEvent.DropCassetteBillAcceptor:
            {
                data.stage = WorkerStateStage.DropCassettteBill;
                this.Close();
            }
            break;

            case DeviceEvent.DropCassetteFullBillAcceptor:
            {
                data.stage = WorkerStateStage.BillFull;
                this.Close();
            }
            break;

            case DeviceEvent.BillAcceptorError:
            case DeviceEvent.DropCassetteJammed:
            case DeviceEvent.BillCheated:
            {
                // ошибка купюроприемника
                data.stage = WorkerStateStage.ErrorBill;
                this.Close();
            }
            break;

            case DeviceEvent.ConnectBillError:
            {
                // нет связи с купюроприемником
                data.stage = WorkerStateStage.ErrorBill;
                this.Close();
            }
            break;
            }
        }
Ejemplo n.º 9
0
        private void reciveResponse(object sender, ServiceClientResponseEventArgs e)
        {
            if (InvokeRequired)
            {
                BeginInvoke(new MachineDrivers.ServiceClientResponseEventHandler(reciveResponse), sender, e);
                return;
            }

            switch (e.Message.Event)
            {
            case DeviceEvent.DropCassetteBillAcceptor:
            {
                data.stage = WorkerStateStage.DropCassettteBill;
                this.Close();
            }
            break;

            case DeviceEvent.DropCassetteFullBillAcceptor:
            {
                data.stage = WorkerStateStage.BillFull;
                this.Close();
            }
            break;

            case DeviceEvent.BillAcceptorError:
            case DeviceEvent.DropCassetteJammed:
            case DeviceEvent.BillCheated:
            {
                // ошибка купюроприемника
                data.stage = WorkerStateStage.ErrorBill;
                this.Close();
            }
            break;

            case DeviceEvent.ConnectBillError:
            {
                // нет связи с купюроприемником
                data.stage = WorkerStateStage.ErrorBill;
                this.Close();
            }
            break;
            }
        }
Ejemplo n.º 10
0
        private void FormMainMenu_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.Alt & e.KeyCode == Keys.F4)
            {
                data.stage = WorkerStateStage.ExitProgram;
            }
            else if (e.Alt & e.KeyCode == Keys.F5)
            {
                if (Globals.IsDebug)
                {
                    // пошлем событие вынимания приемника
                    Drivers.Message message = new Drivers.Message();

                    message.Event   = DeviceEvent.DropCassetteBillAcceptor;
                    message.Content = "Drop bill";

                    ServiceClientResponseEventArgs e1 = new ServiceClientResponseEventArgs(message);

                    reciveResponse(null, e1);
                }
            }
        }
Ejemplo n.º 11
0
        private void reciveResponse(object sender, ServiceClientResponseEventArgs e)
        {
            if (InvokeRequired)
            {
                BeginInvoke(new ServiceClientResponseEventHandler(reciveResponse), sender, e);
                return;
            }

            switch (e.Message.Event)
            {
            case DeviceEvent.Scaner:
                LabelCode.Text = (string)e.Message.Content;
                break;

            case DeviceEvent.BillAcceptor:
                richTextBox1.Text = (string)e.Message.Content + "\n" + richTextBox1.Text;
                break;

            case DeviceEvent.BillAcceptorCredit:
                label5.Text = (string)e.Message.Content + " руб";
                break;
            }
        }
Ejemplo n.º 12
0
        private void scalableLabel2_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.Alt & e.KeyCode == Keys.F4)
            {
                data.stage = WorkerStateStage.ExitProgram;
                Close();
            }
            else if (e.Alt & e.KeyCode == Keys.F5)
            {
                if (Globals.IsDebug)
                {
                    // пошлем событие вставки обратно приемника
                    Drivers.Message message = new Drivers.Message();

                    message.Event   = DeviceEvent.InitializationOK;
                    message.Content = "Insert bill";

                    ServiceClientResponseEventArgs e1 = new ServiceClientResponseEventArgs(message);

                    reciveResponse(null, e1);
                }
            }
        }
Ejemplo n.º 13
0
        private void CreditCheck(ServiceClientResponseEventArgs e)
        {
            if (StopHardware)
            {
                return;
            }

            pBxReturnBack.Enabled  = false;  // блокировать возврат не будем - можем ведь чеком сдачу давать
            SecondMessageText.Text = "";

            lock (Params)
            {
                try
                {
                    data.log.Write(LogMessageType.Information, "SCANER: Обработаем получение чека");

                    // сбросим таймаут
                    Timeout = 0;

                    // прочли чек

                    // поищем такой чек
                    CheckInfo info;

                    if (((string)e.Message.Content).Contains("0000000000"))
                    {
                        info        = new CheckInfo();
                        info.active = false;
                        info.Amount = 50;
                    }
                    else
                    {
                        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;

                    amount      += count;
                    amountCheck += count;

                    // всегда со сдачей - сразу забираем деньгу c чека - никого не спрашиваем - гасим текущий чек - распечатаем новый
                    GlobalDb.GlobalBase.FixedCheck(info.Id);

                    // сдача
                    int diff            = 0;
                    ChooseChangeEnum ch = ChooseChangeEnum.None;

                    if (Globals.ClientConfiguration.Settings.changeOn > 0)
                    {
                        // посчитаем размер сдачи
                        diff = amount - data.serv.price;

                        // денег не достаточно - сдачи нет
                        if (diff < 0)
                        {
                            diff = 0;
                        }

                        // сдача на чек
                        if (amount > data.serv.price)
                        {
                            //if (data.retLogin != "" && Globals.ClientConfiguration.Settings.changeToAccount == 1 && Globals.ClientConfiguration.Settings.changeToCheck == 1)
                            //{
                            //    // тут надо решить как выдать сдачу - спросим пользователя
                            //    ch = (ChooseChangeEnum)FormManager.OpenForm<FormChooseChange>(this, FormShowTypeEnum.Dialog, FormReasonTypeEnum.Modify, diff.ToString());
                            //}
                            //else
                            if (data.retLogin != "" && 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);

                                // запомним сколько внесли на аккаунт
                                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();

                                data.log.Write(LogMessageType.Information, "WAIT CHECK: Печатаем чек со сдачей под номером " + numberCheck + ". На сумму " + diff + " руб.");
                                data.log.Write(LogMessageType.Information, "WAIT CHECK: BarCode " + check);
                                data.log.Write(LogMessageType.Information, "WAIT CHECK: Выход на оказание услуги.");
                            }
                        }
                    }

                    // напишем на экране
                    if (amount >= data.serv.price)
                    {
                        if (diff > 0)
                        {
                            AmountServiceText.Text = "ПРИНЯТО: " + data.serv.price + " руб.";

                            if (ch == ChooseChangeEnum.ChangeToAccount)
                            {
                                SecondMessageText.Text = "Сдача в размере " + diff + " руб. будет зачислена на Ваш аккаунт";
                            }
                            else
                            {
                                SecondMessageText.Text = "Остаток на чеке: " + diff + " руб.";
                            }
                        }
                        else
                        {
                            AmountServiceText.Text = "Внесено: " + amount + " руб.";
                            SecondMessageText.Text = "";
                        }
                    }
                    else
                    {
                        AmountServiceText.Text = "Внесено: " + amount + " руб.";
                        SecondMessageText.Text = "Недостаточно денег для оказания услуги";
                    }

                    data.log.Write(LogMessageType.Information, "WAIT CHECK: Внесено " + amount + " руб.");

                    // деньги внесли - нет пути назад
                    TimeOutTimer.Enabled = false;

                    if (amount >= data.serv.price)
                    {
                        // внесли достаточную для услуги сумму
                        data.log.Write(LogMessageType.Information, "WAIT CHECK: Внесли достаточную для оказания услуги сумму.");

                        AmountServiceText.ForeColor = System.Drawing.Color.Green;
                        pBxGiveOxigen.Enabled       = true;

                        StopHardware = true;

                        if (Globals.ClientConfiguration.Settings.offHardware == 0)
                        {
                            data.drivers.CCNETDriver.ReturnBill();
                            data.drivers.scaner.Request(ZebexCommandEnum.sleep);

                            data.log.Write(LogMessageType.Information, "WAIT BILL: Остановим работу оборудования для приема средств.");
                        }
                    }
                }
                catch (Exception exp)
                {
                    data.log.Write(LogMessageType.Error, "WAIT CHECK: ошибка управляющего устройства.");
                    data.log.Write(LogMessageType.Error, "WAIT CHECK: " + exp.GetDebugInformation());

                    // при ошибке сканер усыпим
                    data.drivers.scaner.Request(ZebexCommandEnum.sleep);
                }
            }
        }
Ejemplo n.º 14
0
        private void CreditMoney(ServiceClientResponseEventArgs e)
        {
            if (StopHardware)
            {
                return;
            }

            pBxReturnBack.Enabled  = false;
            SecondMessageText.Text = "";

            lock (Params)
            {
                try
                {
                    if (moneyFixed)
                    {
                        return;
                    }
                    moneyFixed = true;

                    data.log.Write(LogMessageType.Information, "BILL: Обработаем получение денег");

                    // сбросим таймаут
                    Timeout = 0;

                    int numberNominal = ((BillNominal)e.Message.Content).nominalNumber;

                    if (Globals.ClientConfiguration.Settings.nominals[numberNominal] > 0)
                    {
                        // такую купюру мы обрабатываем
                    }
                    else
                    {
                        // такая купюра не пойдет - вернем ее
                        moneyFixed = false;
                        if (Globals.ClientConfiguration.Settings.offHardware == 0)
                        {
                            data.drivers.CCNETDriver.ReturnBill();
                        }

                        data.log.Write(LogMessageType.Information, "WAIT BILL: Купюру c номером номинала равным " + numberNominal + " не принимаем");

                        SecondMessageText.Text = "Внесите купюру другого номинала.";
                        return;
                    }

                    //  прошли проверку

                    // внесли деньги
                    int count = 0;
                    int.TryParse(((BillNominal)e.Message.Content).Denomination, out count);

                    data.log.Write(LogMessageType.Information, "WAIT BILL: Внесли купюру номиналом " + count + " руб.");

                    amount      += count;
                    amountMoney += count;

                    // сдача
                    int  diff = 0;
                    bool res  = true;   // купюру забираем всегда - предлагаем вернуть - только если перебор

                    if (Globals.ClientConfiguration.Settings.changeOn == 0)
                    {
                        // без сдачи
                        if (amount > data.serv.price)
                        {
                            // купюра великовата - вернем ее
                            amount      -= count;
                            amountMoney -= count;

                            moneyFixed = false;

                            if (Globals.ClientConfiguration.Settings.offHardware == 0)
                            {
                                data.drivers.CCNETDriver.ReturnBill();
                            }

                            if (amount == 0)
                            {
                                pBxReturnBack.Enabled = true;
                            }

                            // сообщим о том что купюра великовата
                            SecondMessageText.Text = "Внесите купюру меньшего номинала.";

                            data.log.Write(LogMessageType.Information, "WAIT BILL: Внесите купюру меньшего номинала. Нет сдачи.");

                            return;
                        }
                    }
                    else
                    {
                        // со сдачей
                        if (amount > data.serv.price)
                        {
                            // купюра великовата - спросим может вернуть ее
                            res = (bool)FormManager.OpenForm <FormInsertBill>(this, FormShowTypeEnum.Dialog, FormReasonTypeEnum.Modify, data, ((BillNominal)e.Message.Content).Denomination);
                        }
                    }


                    if (res)
                    {
                        // забираем купюру
                        if (Globals.ClientConfiguration.Settings.offHardware == 0)
                        {
                            moneyFixed = false;
                            data.drivers.CCNETDriver.StackBill();

                            data.log.Write(LogMessageType.Information, "WAIT BILL: Забираем купюру в приемник.");
                        }
                        else
                        {
                            moneyFixed = false;
                        }
                    }
                    else
                    {
                        // возвращаем ее обратно
                        amount      -= count;
                        amountMoney -= count;

                        data.log.Write(LogMessageType.Information, "WAIT BILL: Возвращаем купюру обратно покупателю.");

                        moneyFixed = false;

                        if (Globals.ClientConfiguration.Settings.offHardware == 0)
                        {
                            data.drivers.CCNETDriver.ReturnBill();
                        }

                        if (amount == 0)
                        {
                            pBxReturnBack.Enabled = true;
                        }

                        return;
                    }

                    ChooseChangeEnum ch = ChooseChangeEnum.None;

                    if (Globals.ClientConfiguration.Settings.changeOn > 0)
                    {
                        // посчитаем размер сдачи
                        diff = amount - data.serv.price;

                        // денег не достаточно - сдачи нет
                        if (diff < 0)
                        {
                            diff = 0;
                        }

                        // сдача на чек
                        if (amount > data.serv.price)
                        {
                            data.log.Write(LogMessageType.Information, "WAIT BILL: Сумма сдачи " + diff + " руб.");

                            //if (data.retLogin != "" && Globals.ClientConfiguration.Settings.changeToAccount == 1 && Globals.ClientConfiguration.Settings.changeToCheck == 1)
                            //{
                            //    // тут надо решить как выдать сдачу - спросим пользователя
                            //    ch = (ChooseChangeEnum)FormManager.OpenForm<FormChooseChange>(this, FormShowTypeEnum.Dialog, FormReasonTypeEnum.Modify, diff.ToString());
                            //}
                            //else
                            if (data.retLogin != "" && 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 BILL: сдача на аккаунт. Сумма сдачи " + diff);

                                // запомним сколько внесли на аккаунт
                                data.statistic.AccountMoneySumm += diff;

                                difftoAccount += diff;

                                // внесем на счет
                                GlobalDb.GlobalBase.AddToAmount(data.CurrentUserId, diff);
                            }
                            else
                            {
                                // выдаем чек
                                data.log.Write(LogMessageType.Information, "WAIT BILL: сдача на чек. Сумма сдачи " + diff);

                                // запомним сколько выдали на чеке
                                data.statistic.BarCodeMoneySumm += diff;

                                difftoCheck += diff;

                                // запомним такой чек
                                string check = CheckHelper.GetUniqueNumberCheck(12);

                                // Здесь также наращивается номер чека
                                GlobalDb.GlobalBase.AddToCheck(data.CurrentUserId, diff, check);

                                data.drivers.printer.StartPrint(data.drivers.printer.getNamePrinter());

                                // и напечатем его
                                data.drivers.printer.PrintHeader(1);
                                data.drivers.printer.PrintBarCode(check, diff);
                                data.drivers.printer.PrintFooter();
                                data.drivers.printer.EndPrint();
                            }
                        }
                    }

                    // напишем на экране
                    if (amount >= data.serv.price)
                    {
                        if (diff > 0)
                        {
                            AmountServiceText.Text = "ПРИНЯТО: " + data.serv.price + " руб.";

                            if (ch == ChooseChangeEnum.ChangeToAccount)
                            {
                                SecondMessageText.Text = "Сдача в размере " + diff + " руб. будет зачислена на Ваш аккаунт";
                            }
                            else
                            {
                                SecondMessageText.Text = "Остаток на чеке: " + diff + " руб.";
                            }
                        }
                        else
                        {
                            AmountServiceText.Text = "Внесено: " + amount + " руб.";
                            SecondMessageText.Text = "";
                        }
                    }
                    else
                    {
                        AmountServiceText.Text = "Внесено: " + amount + " руб.";
                        SecondMessageText.Text = "Недостаточно денег для оказания услуги";
                    }

                    data.log.Write(LogMessageType.Information, "WAIT BILL: Внесено " + amount + " руб.");

                    // деньги внесли - нет пути назад
                    TimeOutTimer.Enabled = false;

                    // Количество банкнот
                    data.statistic.CountBankNote++;
                    // заносим банкноту
                    GlobalDb.GlobalBase.InsertBankNote();

                    if (amount >= data.serv.price)
                    {
                        // внесли достаточную для услуги сумму
                        data.log.Write(LogMessageType.Information, "WAIT BILL: Внесли достаточную для оказания услуги сумму.");

                        AmountServiceText.ForeColor = System.Drawing.Color.Green;
                        pBxGiveOxigen.Enabled       = true;

                        moneyFixed   = false;
                        StopHardware = true;

                        if (Globals.ClientConfiguration.Settings.offHardware == 0)
                        {
                            data.drivers.CCNETDriver.ReturnBill();
                            data.drivers.scaner.Request(ZebexCommandEnum.sleep);

                            data.log.Write(LogMessageType.Information, "WAIT BILL: Остановим работу оборудования для приема средств.");
                        }
                    }
                }
                catch (Exception exp)
                {
                    data.log.Write(LogMessageType.Error, "WAIT BILL: ошибка управляющего устройства.");
                    data.log.Write(LogMessageType.Error, "WAIT BILL: " + exp.GetDebugInformation());

                    // если какая либо ошибка - вернем купюру
                    data.drivers.CCNETDriver.ReturnBill();

                    moneyFixed = false;
                }
            }
        }
Ejemplo n.º 15
0
        private void reciveResponse(object sender, ServiceClientResponseEventArgs e)
        {
            if (InvokeRequired)
            {
                BeginInvoke(new MachineDrivers.ServiceClientResponseEventHandler(reciveResponse), sender, e);
                return;
            }

            if (data.log != null)
            {
                data.log.Write(LogMessageType.Debug, "WAIT BILL: Событие: " + e.Message.Content + ".");
            }

            switch (e.Message.Event)
            {
            case DeviceEvent.BillAcceptor:

                break;

            case DeviceEvent.BillAcceptorEscrow:
                CreditMoney(e);
                break;

            case DeviceEvent.Scaner:
                CreditCheck(e);
                break;

            case DeviceEvent.BillAcceptorCredit:
                //CreditMoney(e);
                break;

            case DeviceEvent.DropCassetteBillAcceptor:
            {
                data.stage = WorkerStateStage.DropCassettteBill;
                if (data.log != null)
                {
                    data.log.Write(LogMessageType.Debug, "WAIT BILL: Вытащили купюроприемник.");
                }

                this.Close();
            }
            break;

            case DeviceEvent.ConnectBillError:
            {
                // нет связи с купюроприемником
                data.stage = WorkerStateStage.ErrorBill;
                if (data.log != null)
                {
                    data.log.Write(LogMessageType.Error, "WAIT BILL: Нет связи с купюроприемником.");
                }

                this.Close();
            }
            break;

            default:
                // Остальные события нас не интересуют
                break;
            }
        }
Ejemplo n.º 16
0
        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);
                }
            }
        }