示例#1
0
        private void closeRCheck_Click(object sender, RoutedEventArgs e)
        {
            string sendingSuccess = CRM.SendManDocPack(
                login.Text, CRM.password, 1, moneyForRCheck.Text, allRCenters.Text,
                allVisas.Text, returnDate.Text, reception: true
                );

            string[] sendingData = sendingSuccess.Split('|');

            if (sendingData[0] == "OK")
            {
                Log.Add("успешно закрыт чек ресепшена");

                BlockRCheckButton(block: true, checkClosed: true);
            }
            else if (sendingData[0] == "WARNING")
            {
                Log.Add("некоторые услуги из чека не имеют цены: " + sendingData[1]);

                if (MessageBoxes.NullInServices(sendingData[1]) == MessageBoxResult.Yes)
                {
                    BlockRCheckButton(block: true, checkClosed: true);
                }
                else
                {
                    CleanCheck();
                }
            }
            else
            {
                Log.Add("во время формирования чека произошла ошибка: " + sendingData[1]);

                ShowError(receptionPlace, sendingData[1]);
            }
        }
示例#2
0
        private void UpdateCenters()
        {
            allCenters.Items.Clear();
            allRCenters.Items.Clear();

            foreach (string center_name in CRM.GetAllCenters(login.Text))
            {
                allCenters.Items.Add(center_name);
                allRCenters.Items.Add(center_name);
            }

            allCenters.SelectedIndex  = 0;
            allRCenters.SelectedIndex = 0;
        }
示例#3
0
        private void UpdateStatuses()
        {
            string port, speed, version, model;

            status1.Content = CURRENT_VERSION;
            status2.Content = CRM.GetMyIP();
            status3.Content = String.Format("отправки {0} / сервер {1}", Secret.PROTOCOL_PORT_SEND, Secret.PROTOCOL_PORT_RECEIVE);
            status4.Content = Secret.PROTOCOL_IP_SERVER;

            Cashbox.GetStatusData(out port, out speed, out version, out model);

            status5.Content = port;
            status6.Content = speed;
            status7.Content = model;
        }
示例#4
0
        private void UpdateVTypes()
        {
            if (allCenters.SelectedItem == null)
            {
                return;
            }

            allVisas.Items.Clear();

            foreach (string visa_name in CRM.GetAllVType(allCenters.SelectedItem.ToString()))
            {
                allVisas.Items.Add(visa_name);
            }

            allVisas.SelectedIndex = 0;
        }
示例#5
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);
        }
示例#6
0
        public static void RepeatPrint(object obj, ElapsedEventArgs e)
        {
            PrepareDriver(currentDrvPassword);

            Driver.RepeatDocument();

            int printSuccess = GetResultCodeInner();

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

            if (printSuccess == 0)
            {
                repeatPrintingTimer.Enabled = false;
                repeatPrintingTimer.Stop();

                CRM.CashboxPaymentControl(
                    agreement: currentDocPack,
                    paymentType: MainWindow.Cashbox.manDocPackForPrinting.MoneyType.ToString()
                    );
            }
        }
示例#7
0
        private static void worker_CashboxAndSockets(object sender, DoWorkEventArgs e)
        {
            BackgroundWorker worker = sender as BackgroundWorker;

            ShowStartStatus("Пожалуйста, подождите пока программа соединится с кассой...");

            Cashbox = CRM.FindCashbox();

            if (Cashbox == null)
            {
                ShowStartError("Ошибка подключения к кассе. Проверьте подключение и перезапустите приложение", onlyExit: true);
                return;
            }

            Cashbox.serialNumber = Cashbox.GetSerialNumber();
            Log.Add(String.Format("нашли {0} {1}", Cashbox.Name(), Cashbox.serialNumber));

            ShowStartStatus("Пожалуйста, подождите пока программа соединится с сервером...");

            if (!CRM.SocketsConnect())
            {
                ShowStartError("Ошибка подключения к серверу системы VMS", onlyExit: true);
                return;
            }

            Thread.Sleep(1000);

            ShowStartStatus("Пожалуйста, подождите пока программа проверит номер кассы...");

            if (!CRM.CashboxSerialNumberIsOk(Cashbox.serialNumber))
            {
                ShowStartError(String.Format("Серийный номер кассы {0} не найден в системе", Cashbox.serialNumber), onlyExit: true);
                return;
            }

            Instance.ShowEntrance();
        }
示例#8
0
        public bool ReportRegion(string reportType)
        {
            Dictionary <uint, string> agreements = new Dictionary <uint, string>();

            atolDriver.setParam(Constants.LIBFPTR_PARAM_FN_DATA_TYPE, Constants.LIBFPTR_FNDT_LAST_DOCUMENT);
            atolDriver.fnQueryData();
            uint lastDoc = atolDriver.getParamInt(Constants.LIBFPTR_PARAM_DOCUMENT_NUMBER);

            atolDriver.setParam(Constants.LIBFPTR_PARAM_FN_DATA_TYPE, Constants.LIBFPTR_FNDT_SHIFT);
            atolDriver.fnQueryData();
            uint docsInLine = atolDriver.getParamInt(Constants.LIBFPTR_PARAM_RECEIPT_NUMBER);

            uint firstDoc = lastDoc - docsInLine + 1;

            string[] FDData = CRM.GetFDData(firstDoc, reportType);

            if (FDData.Length <= 0 || FDData[0] == "ERR")
            {
                return(false);
            }
            else
            {
                for (int i = 1; i < FDData.Length; i++)
                {
                    if (String.IsNullOrEmpty(FDData[i]))
                    {
                        continue;
                    }

                    string[] fd = FDData[i].Split(':');
                    agreements.Add(uint.Parse(fd[0]), fd[1]);
                }
            }

            PrintLine(line: true);
            PrintLine("ОТЧЁТ до ЗАКРЫТИЯ СМЕНЫ");

            for (uint i = firstDoc; i <= lastDoc; i++)
            {
                atolDriver.setParam(Constants.LIBFPTR_PARAM_FN_DATA_TYPE, Constants.LIBFPTR_FNDT_DOCUMENT_BY_NUMBER);
                atolDriver.setParam(Constants.LIBFPTR_PARAM_DOCUMENT_NUMBER, i);
                atolDriver.fnQueryData();

                uint     documentType   = atolDriver.getParamInt(Constants.LIBFPTR_PARAM_FN_DOCUMENT_TYPE);
                uint     documentNumber = atolDriver.getParamInt(Constants.LIBFPTR_PARAM_DOCUMENT_NUMBER);
                DateTime dateTime       = atolDriver.getParamDateTime(Constants.LIBFPTR_PARAM_DATE_TIME);
                String   fiscalSign     = atolDriver.getParamString(Constants.LIBFPTR_PARAM_FISCAL_SIGN);

                double sum  = atolDriver.getParamDouble(1020);
                uint   type = atolDriver.getParamInt(1054);

                PrintLine(line: true);
                PrintLine("документ ФД: " + documentNumber.ToString());
                PrintLine("договор: " + (agreements.ContainsKey(documentNumber) ? agreements[documentNumber] : "не найден"));
                PrintLine("тип: " + (type == 1 ? "приход" : (type == 2 ? "возврат" : "ИНОЕ")));
                PrintLine("дата: " + dateTime.ToString());
                PrintLine("ФП: " + fiscalSign.ToString());
                PrintLine("сумма чека: " + (type == 2 ? "-" : "") + sum.ToString());
            }

            PrintLine(line: true);

            for (int i = 0; i < 10; i++)
            {
                PrintLine(" ");
            }

            atolDriver.cut();

            return(true);
        }
示例#9
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);
            }
        }
示例#10
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);
            }
        }
示例#11
0
        public bool ReportRegion(string reportTypeString)
        {
            int reportType = Int32.Parse(reportTypeString);

            Dictionary <uint, string> agreements = new Dictionary <uint, string>();

            atolDriver.setParam(Constants.LIBFPTR_PARAM_FN_DATA_TYPE, Constants.LIBFPTR_FNDT_LAST_DOCUMENT);
            atolDriver.fnQueryData();
            uint lastDoc = atolDriver.getParamInt(Constants.LIBFPTR_PARAM_DOCUMENT_NUMBER);

            atolDriver.setParam(Constants.LIBFPTR_PARAM_FN_DATA_TYPE, Constants.LIBFPTR_FNDT_SHIFT);
            atolDriver.fnQueryData();
            uint docsInLine = atolDriver.getParamInt(Constants.LIBFPTR_PARAM_RECEIPT_NUMBER);

            uint firstDoc = lastDoc - docsInLine + 1;

            bool verySmall = false;

            if (reportType == 5)
            {
                reportType = 3;
                verySmall  = true;
            }

            string[] FDData = CRM.GetFDData(firstDoc, (reportType <= 2 ? reportType : (reportType - 2)));

            if (FDData.Length <= 0 || FDData[0] == "ERR")
            {
                return(false);
            }
            else
            {
                for (int i = 1; i < FDData.Length; i++)
                {
                    if (String.IsNullOrEmpty(FDData[i]))
                    {
                        continue;
                    }

                    string[] fd = FDData[i].Split(':');

                    if (fd.Length < 2)
                    {
                        return(false);
                    }

                    agreements.Add(uint.Parse(fd[0]), fd[1]);
                }
            }

            PrintLine(line: true);
            PrintLine("ОТЧЁТ до ЗАКРЫТИЯ СМЕНЫ");

            if (verySmall)
            {
                PrintLine(line: true);
                PrintLine("дата | время | чек | договор | сумма");
                PrintLine(line: true);
            }
            else if (reportType > 2)
            {
                PrintLine(line: true);
                PrintLine("дата | время | чек | ФП");
                PrintLine("договор | приход/возврат | сумма");
            }

            for (uint i = firstDoc; i <= lastDoc; i++)
            {
                atolDriver.setParam(Constants.LIBFPTR_PARAM_FN_DATA_TYPE, Constants.LIBFPTR_FNDT_DOCUMENT_BY_NUMBER);
                atolDriver.setParam(Constants.LIBFPTR_PARAM_DOCUMENT_NUMBER, i);
                atolDriver.fnQueryData();

                uint     documentType   = atolDriver.getParamInt(Constants.LIBFPTR_PARAM_FN_DOCUMENT_TYPE);
                uint     documentNumber = atolDriver.getParamInt(Constants.LIBFPTR_PARAM_DOCUMENT_NUMBER);
                DateTime dateTime       = atolDriver.getParamDateTime(Constants.LIBFPTR_PARAM_DATE_TIME);
                string   fiscalSign     = atolDriver.getParamString(Constants.LIBFPTR_PARAM_FISCAL_SIGN);

                double sum      = atolDriver.getParamDouble(1020);
                uint   type     = atolDriver.getParamInt(1054);
                string doc      = (agreements.ContainsKey(documentNumber) ? agreements[documentNumber] : "[не найден]");
                string typeLine = (type == 1 ? "приход" : (type == 2 ? "возврат" : "ИНОЕ"));

                if (verySmall)
                {
                    PrintGraphicLine(String.Format(
                                         "{0}.{1}.{2}   {3}:{4}   {5}   {6}   {7}   {8} р",
                                         dateTime.Day.ToString("D2"), dateTime.Month.ToString("D2"), dateTime.Year.ToString("D4"),
                                         dateTime.Hour.ToString("D2"), dateTime.Minute.ToString("D2"),
                                         documentNumber, DocNumber(doc), typeLine, (type == 2 ? "-" : String.Empty) + sum.ToString()
                                         ));
                }
                else if (reportType > 2)
                {
                    PrintLine(line: true);

                    PrintLine(String.Format(
                                  "{0}.{1} {2}:{3} {4} {5}",
                                  dateTime.Day, dateTime.Month, dateTime.Hour, dateTime.Minute, documentNumber, fiscalSign
                                  ));

                    PrintLine(String.Format(
                                  "{0} {1} {2} р", doc, typeLine, (type == 2 ? "-" : "") + sum.ToString()
                                  ));
                }
                else
                {
                    PrintLine(line: true);
                    PrintLine("документ ФД: " + documentNumber.ToString());
                    PrintLine("договор: " + doc);
                    PrintLine("тип: " + typeLine);
                    PrintLine("дата: " + dateTime.ToString());
                    PrintLine("ФП: " + fiscalSign.ToString());
                    PrintLine("сумма чека: " + (type == 2 ? "-" : "") + sum.ToString());
                }
            }

            PrintLine(line: true);

            for (int i = 0; i < 10; i++)
            {
                PrintLine(" ");
            }

            atolDriver.cut();

            if (verySmall)
            {
                CleanOldGraphicLine();
            }

            return(true);
        }
示例#12
0
        public static string PrintReceipt(string appDataString, DocPack doc)
        {
            string[] appData = appDataString.Split('|');

            decimal[] receptionServices = { 0, 0, 0, 0, 0 };

            if (appData[0] != "OK")
            {
                Log.AddWeb("Ошибка вернувшихся данных записи");
                return("Ошибка вернувшихся данных записи");
            }

            int receiptIndex = int.Parse(appData[5]) + 1;

            if (!Directory.Exists(RECEIPT_DIR))
            {
                Directory.CreateDirectory(RECEIPT_DIR);
            }

            string fileName = RECEIPT_DIR + "\\" + appData[2] + "_D_" + receiptIndex.ToString() + ".pdf";

            document = new Document();
            FileStream fs     = new FileStream(fileName, FileMode.Create, FileAccess.Write);
            PdfWriter  writer = PdfWriter.GetInstance(document, fs);

            document.Open();

            cb = writer.DirectContent;

            BaseFont bf = BaseFont.CreateFont("FONT.TTF", Encoding.GetEncoding(1251).BodyName, BaseFont.NOT_EMBEDDED);

            cb.SetColorFill(BaseColor.BLACK);
            cb.SetFontAndSize(bf, 10);

            string actNum = AppNumber(appData[2]) + "/ДОП" + receiptIndex.ToString();

            for (int i = 0; i < 2; i++)
            {
                if (i > 0)
                {
                    AddText();
                    AddText();
                    AddText(
                        "- - - - - - - - - - - - - - - - - - - - - - - -" +
                        " линия отрыва " +
                        "- - - - - - - - - - - - - - - - - - - - - - -" +
                        " линия отрыва " +
                        "- - - - - - - - - - - - - - - - - - - - - - -"
                        );
                    AddText();
                    AddText();

                    CURRENT_ROW = 0;
                }

                AddTitle("Акт N " + actNum);
                AddTitle("выполненных работ на дополнительные услуги");

                AddText("г.Москва");
                AddText(DateTime.Now.ToString("dd MMMM yyyy"), x: 500, y: CurrentY(), noNewLine: true);

                AddText();

                AddText("Заявитель: " + appData[1] + " (номер записи " + AppNumber(appData[2]) + ")");
                AddText("Исполнитель: ");

                AddText("Оказаны следующие виды работ:");

                AddRow("", "", "", "", "Цена", "Сумма", header: true, aligment: 1);
                AddRow("    " + "п/п", "Наименование работы(услуги)", "Ед.изм.", "Кол-во", "(с учетом", "(с учетом", withBox: false, header: true, aligment: 1);
                AddRow("", "", "", "", "НДС 20%), руб", "НДС 20%), руб", withBox: false, header: true, aligment: 1);

                foreach (Service service in doc.Services)
                {
                    decimal total = service.Price * service.Quantity;

                    AddRow("N", service.Name, "шт", service.Quantity.ToString(),
                           service.Price.ToString() + ".00", total.ToString() + ".00");
                }

                AddText();
                AddText("ИТОГО : " + MainWindow.Cashbox.manDocPackSumm + " руб 00 коп", x: 450, y: CurrentY(), noNewLine: true);

                AddText("Услуги оказаны в полном объеме и в срок.");
                AddText("Услуги оплачены Заказчиком в сумме: " + appData[3].ToLower());
                AddText("в т.ч. НДС 20% " + appData[4].ToLower());
                AddText("Стороны друг к другу претензий не имеют.");

                AddText();
                AddText();
                AddText("Подписи сторон:");

                AddText();
                AddText(
                    "Исполнитель: _______________ / __________________ /"
                    + "       " +
                    "заказчик: _______________ / " + appData[1] + " /"
                    );

                AddText();
                AddText("(ФИО)", x: 175, y: CurrentY(), noNewLine: true);
                AddText("(ФИО)", x: 415, y: CurrentY(), noNewLine: true);
                AddText("М.П.");
            }


            document.Close();
            fs.Close();
            writer.Close();

            System.Diagnostics.Process.Start(fileName);

            CURRENT_LINE = 0;
            CURRENT_ROW  = 0;

            Log.Add("Сформирован акт " + fileName);

            foreach (Service service in doc.Services)
            {
                decimal total = service.Price * service.Quantity;

                if (service.ReceptionID > 0)
                {
                    receptionServices[service.ReceptionID] += total;
                }
            }

            CRM.SendFile(
                pathToFile: fileName,
                appID: appData[6],
                actNum: actNum,
                xerox: receptionServices[1].ToString(),
                form: receptionServices[2].ToString(),
                print: receptionServices[3].ToString(),
                photo: receptionServices[4].ToString()
                );

            return(String.Empty);
        }
示例#13
0
        private void sendLogin_Click(object sender, RoutedEventArgs e)
        {
            Canvas canvasToGo = mainPlace;

            string passwordHash = CRM.GenerateMySQLHash(password.Password);

            if (!CRM.CrmAuthentication(login.Text, passwordHash, Cashbox.serialNumber))
            {
                loginFailText.Content = CRM.loginError;
                returnFromErrorTo     = loginPlace;
                canvasToGo            = loginFail;

                Log.Add("ошибка входа с логином " + login.Text);
            }
            else if (Diagnostics.FailCashbox())
            {
                loginFailText.Content = "Ошибка подключения к кассе. Проверьте подключение и перезапустите приложение";
                returnFromErrorTo     = loginPlace;
                canvasToGo            = loginFail;

                Log.Add("ошибка подключения к кассе");
            }
            else if (Cashbox.CheckCashboxTables().Count() != 0)
            {
                int index = 0;

                foreach (string field in Cashbox.CheckCashboxTables())
                {
                    index += 1;
                    settingText2.Items.Add(index.ToString() + ". " + field);
                }

                returnFromErrorTo = loginPlace;
                canvasToGo        = cashboxSettingsFail;

                Log.Add("ошибка настроек кассы");

                if (Cashbox.CurrentMode() != 4)
                {
                    settingText5.Visibility     = Visibility.Visible;
                    reportAndRessetting.Content = "закрыть смену, распечатать отчёт и перенастроить";
                }
                else
                {
                    settingText5.Visibility     = Visibility.Hidden;
                    reportAndRessetting.Content = "перенастроить таблицы настроек";
                }
            }
            else
            {
                Server.StartServer();
                CRM.currentLogin    = login.Text;
                CRM.currentPassword = passwordHash;

                status10.Content = login.Text.Replace("_", "__");
            }

            MoveCanvas(
                moveCanvas: canvasToGo,
                prevCanvas: loginPlace,
                direction: moveDirection.vertical
                );

            if (Cashbox != null)
            {
                UpdateStatuses();
            }
        }
示例#14
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));
                }
            }
        }