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); }
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); } }
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); } }
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)); } } }