Ejemplo n.º 1
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.º 2
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.º 3
0
 private void pictureBox2_Click(object sender, System.EventArgs e)
 {
     ch = ChooseChangeEnum.ChangeToAccount;
     Close();
 }
Ejemplo n.º 4
0
 private void pictureBox1_Click(object sender, System.EventArgs e)
 {
     ch = ChooseChangeEnum.ChangeToCheck;
     Close();
 }
Ejemplo n.º 5
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);
                }
            }
        }