Beispiel #1
0
        private void ShowError(Canvas from, string error, string agrNumber = "")
        {
            if (error == "Ошибок нет")
            {
                error = "Неизвестная ошибка (возможно искажение данных)";
            }

            loginFailText.Content = error;
            returnFromErrorTo     = from;

            MoveCanvas(
                moveCanvas: loginFail,
                prevCanvas: from,
                direction: moveDirection.vertical
                );

            CRM.SendError(error, agrNumber);
        }
Beispiel #2
0
        public string DirectPayment(decimal?moneyPrice, decimal?moneySumm, string forPrinting,
                                    string sending, int department, int moneyType, bool returnSale, bool VAT)
        {
            Log.Add("прямая печать чека (" + (returnSale ? "возврат" : "оплата") + ")");
            Log.Add("услуга '" + forPrinting + "', цена " + moneyPrice.ToString() + ", сумма " + moneySumm.ToString());

            Driver.CheckType = (returnSale ? 2 : 0);
            Driver.Password  = currentDirectPassword;
            Driver.OpenCheck();

            if ((moneyType == 2) || returnSale)
            {
                moneySumm = moneyPrice;
            }

            if (!String.IsNullOrEmpty(sending))
            {
                PrepareDriver(currentDirectPassword);
                Driver.CustomerEmail = sending;
                Driver.FNSendCustomerEmail();

                Log.Add("отправка СМС/email на адрес: " + sending);
            }

            PrepareDriver(currentDirectPassword);
            PrintLine("Кассир: " + CRM.cashier, line: true, password: currentDirectPassword);
            Driver.Timeout = timeout;

            Driver.Quantity          = 1;
            Driver.Price             = moneyPrice ?? 0;
            Driver.StringForPrinting = forPrinting;

            Driver.Department = department;

            Driver.Tax1 = (VAT ? 1 : 0);
            Driver.Tax2 = 0;
            Driver.Tax3 = 0;
            Driver.Tax4 = 0;

            if (returnSale)
            {
                Driver.ReturnSale();
            }
            else
            {
                Driver.Sale();
            }

            PrintLine(line: true, password: currentDirectPassword);
            PrepareDriver(currentDirectPassword);

            if (moneyType == 1)
            {
                Log.Add("тип оплаты: наличными");

                Driver.Summ1 = moneySumm ?? 0;
                Driver.Summ2 = 0;
            }
            else
            {
                Log.Add("тип оплаты: безнал");

                Driver.Summ2 = moneySumm ?? 0;
                Driver.Summ1 = 0;
            }

            PrepareDriver(currentDirectPassword);
            Driver.StringForPrinting = String.Empty;
            Driver.CloseCheck();

            int    checkClosingResult    = Driver.ResultCode;
            string checkClosingErrorText = Driver.ResultCodeDescription;

            Log.AddWithCode("распечатка чека");

            if (checkClosingResult != 0)
            {
                PrepareDriver(currentDirectPassword);

                Driver.CancelCheck();

                Log.AddWithCode("отмена чека");
            }
            else if (!MainWindow.TEST_VERSION)
            {
                repeatPrintingTimer.Enabled = true;
                repeatPrintingTimer.Start();
            }

            if (checkClosingResult == 0)
            {
                return("OK:" + Driver.Change);
            }
            else
            {
                CRM.SendError(checkClosingErrorText);

                return("ERR2:" + checkClosingErrorText);
            }
        }
Beispiel #3
0
        public string PrintDocPack(DocPack doc, int MoneyType = -1,
                                   bool returnSale            = false, decimal?MoneySumm = null, string sendingAddress = "")
        {
            currentDrvPassword = doc.CashierPass;
            currentDocPack     = doc.AgrNumber;

            if (MoneyType != -1)
            {
                doc.MoneyType = MoneyType;
            }

            if (doc.Services.Count > 0 && doc.Services[0].ReturnShipping == 1)
            {
                returnSale = true;
            }

            PrepareDriver(currentDrvPassword);
            Driver.CheckType = (returnSale ? 2 : 0);

            Driver.OpenCheck();

            string sendingCheck = String.Empty;

            if (!String.IsNullOrEmpty(sendingAddress))
            {
                sendingCheck = sendingAddress;
            }
            else if (!String.IsNullOrEmpty(doc.Mobile))
            {
                sendingCheck = doc.Mobile;
            }
            else if (!String.IsNullOrEmpty(doc.Email))
            {
                sendingCheck = doc.Email;
            }

            if (!String.IsNullOrEmpty(sendingCheck))
            {
                Driver.CustomerEmail = sendingCheck;
                Driver.FNSendCustomerEmail();
            }

            PrintLine("Кассир: " + CRM.cashier, line: true);

            if (doc.Region)
            {
                PrintLine("Договор: " + doc.AgrNumber);
                PrintLine("BankID : " + doc.BankID, line: true);
            }


            foreach (Service service in doc.Services)
            {
                Driver.Password = currentDrvPassword;
                Driver.Timeout  = timeout;

                Driver.Quantity          = service.Quantity;
                Driver.Price             = service.Price;
                Driver.StringForPrinting = service.Name;

                Driver.Department = service.Department;

                Driver.Tax1 = service.VAT;
                Driver.Tax2 = 0;
                Driver.Tax3 = 0;
                Driver.Tax4 = 0;

                if (returnSale)
                {
                    Driver.ReturnSale();
                }
                else
                {
                    Driver.Sale();
                }

                PrintLine(line: true);
            }

            PrepareDriver(currentDrvPassword);

            Driver.StringForPrinting = String.Empty;

            if (doc.MoneyType == 1)
            {
                Log.Add("тип оплаты: наличными");

                Driver.Summ1 = MoneySumm ?? doc.Money;
                Driver.Summ2 = 0;
            }
            else
            {
                Log.Add("тип оплаты: безнал (реальный: " + doc.MoneyType.ToString() + ")");

                Driver.Summ2 = MoneySumm ?? doc.Money;
                Driver.Summ1 = 0;
            }

            Driver.CloseCheck();

            int    checkClosingResult    = Driver.ResultCode;
            string checkClosingErrorText = Driver.ResultCodeDescription;

            Log.AddWithCode("распечатка чека");

            if (checkClosingResult != 0)
            {
                PrepareDriver(currentDrvPassword);

                Driver.CancelCheck();

                Log.AddWithCode("отмена чека");
            }
            else if (!MainWindow.TEST_VERSION && !doc.Region)
            {
                repeatPrintingTimer.Enabled = true;
                repeatPrintingTimer.Start();
            }

            if (checkClosingResult == 0)
            {
                return("OK:" + Driver.Change);
            }
            else
            {
                CRM.SendError(checkClosingErrorText, doc.AgrNumber);

                return("ERR2:" + checkClosingErrorText);
            }
        }
Beispiel #4
0
        public static string ResponsePrepare(string request, bool empty, string clientIP)
        {
            string err = String.Empty;

            if (empty)
            {
                Log.Add("пустой запрос с " + clientIP);
                CRM.SendError("Пустой запрос с " + clientIP);

                return("403");
            }
            else if (!CheckRequest.CheckValidRequest(request))
            {
                Log.Add("невалидный запрос " + clientIP);
                CRM.SendError("Невалидный запрос с " + clientIP);

                return("404");
            }

            if (!CheckRequest.CheckLoginInRequest(request, out err))
            {
                Log.Add("конфликт логинов: " + err);
                CRM.SendError("Конфликт логинов: " + err);

                return("ERR3:Кассовая программа запущена пользователем " + CRM.currentLogin);
            }

            if (CheckRequest.CheckConnection(request))
            {
                Log.Add("бип-тест подключения к кассе");

                string testResult = Diagnostics.MakeBeepTest();

                return(testResult);
            }

            if (!CheckRequest.CheckXml(request))
            {
                Log.Add("CRC ошибочна, возвращаем ошибку данных");
                CRM.SendError("CRC ошибка");

                return("ERR1:Ошибка переданных данных");
            }
            else
            {
                Log.Add("CRC запроса корректна, логин соответствует");

                DocPack docPack = new DocPack();

                docPack.DocPackFromXML(request);

                if (!String.IsNullOrWhiteSpace(docPack.AgrNumber))
                {
                    Log.Add("номер договора: " + docPack.AgrNumber);
                }

                MainWindow.Cashbox.manDocPackForPrinting = docPack;

                if (docPack.RequestOnly == 1)
                {
                    MainWindow.Cashbox.manDocPackSumm = docPack.Total;

                    ShowTotal(docPack.Total.ToString());

                    return("OK:Callback запрос получен");
                }
                else
                {
                    return(MainWindow.Cashbox.PrintDocPack(docPack));
                }
            }
        }