Exemplo n.º 1
0
        public string PrintReport(string id, string site, string domain, string url, string printtemplateid, string printer)
        {
            _logger.Debug(id + "-" + site + "-" + domain + "-" + url + "-" + printtemplateid + "-" + printer);

            try
            {
                PrintHelper.PrintReport(id, site, domain, url, printtemplateid, printer);

                if (string.IsNullOrEmpty(printer) || printer == "null" || printer == "undefined")
                {
                    return(PrintHelper.GetDefaultPrinter());
                }
                else
                {
                    return(printer);
                }
            }
            catch (Exception exception)
            {
                _logger.Debug(exception.ToString());
                return(String.Empty);
            }
        }
Exemplo n.º 2
0
        public string PrintPdfReport(string url, string printer, string server, int port, string name, string pwd)
        {
            _logger.Debug(url + "-" + printer);

            try
            {
                PrintHelper.PrintJpgReport(url, server, port, name, pwd);

                if (string.IsNullOrEmpty(printer) || printer == "null")
                {
                    return(PrintHelper.GetDefaultPrinter());
                }
                else
                {
                    return(printer);
                }
            }
            catch (Exception exception)
            {
                _logger.Debug(exception.ToString());
                return(String.Empty);
            }
        }
Exemplo n.º 3
0
        public bool CreateBill(out string msgBoxText)
        {
            bool retVal = true;

            msgBoxText = null;
            string userErrMsgSuffix = Environment.NewLine + AppLib.GetLangTextFromAppProp("userErrMsgSuffix");

            userErrMsgSuffix = userErrMsgSuffix.Replace("\\n", Environment.NewLine);

            AppLib.WriteLogTraceMessage("Создание пречека для заказа " + _order.OrderNumberForPrint.ToString());

            // свойства заказа, созадаваемые перед печатью чека:
            //      1. BarCodeValue - значение штрих-кода, 12 цифр (6 - yymmdd, 2 - код источника, 4 - номер чека для печати)
            //      2. LanguageTypeId - язык, который был выбран при создании чека (ua/en/ru)
            //--------------------------------------------------

            string deviceName = (string)AppLib.GetAppGlobalValue("ssdID", string.Empty);

            if (deviceName == string.Empty)
            {
                AppLib.WriteLogErrorMessage("В config-файле не найден элемент \"ssdID\" - идентификатор терминала самообслуживания.\n\t\tTrace: PrintBill.cs, CreateBill()");
                msgBoxText = "App config error: don't find 'ssdID' element." + userErrMsgSuffix;
                return(false);
            }
            if (deviceName.Length > 2)
            {
                deviceName = deviceName.Substring(0, 2);
            }

            // 1. OrderNumberForPrint
            if (_order.OrderNumberForPrint == -1)
            {
                AppLib.WriteLogErrorMessage("Класс PrintBill. Не указан номер заказа");
                msgBoxText = "App error: no order number." + userErrMsgSuffix;
                return(false);
            }

            // дату заказа создаем ПЕРЕД печатью
            _order.OrderDate = DateTime.Now;

            // 2. BarCodeValue
            //    идент.устройства - 2 символа
            if (deviceName.Length <= 2)
            {
                deviceName = string.Format("{0:D2}", deviceName);
            }
            else
            {
                deviceName = deviceName.Substring(0, 2);
            }
            //    дата заказа в формате yyMMdd - 6 символов
            //    номер заказа (для печати - случайный) в формате 0000 - 4 символа
            // т.к. в формате EAN-13 если первый символ - 0, то он удаляется, используем в начале дату
            string sBuf = (_order.OrderDate == null) ? "000000" : string.Format("{0:yyMMdd}", _order.OrderDate);

            _order.BarCodeValue = sBuf + _order.OrderNumberForPrint.ToString("000000");

            // 3. LanguageTypeId
            _order.LanguageTypeId = AppLib.AppLang;

            // ширина из config-файла
            int width = (int)AppLib.GetAppGlobalValue("BillPageWidht", 0);

            if (width == 0)
            {
                AppLib.WriteLogErrorMessage("В config-файле не указан элемент BillPageWidht с шириной чека. Берется значение по умолчанию - 300 (7,8см)");
                width = 300;
            }

            // принтеры в системе
            List <PrintQueue> printers = PrintHelper.getPrintersList();

            if (printers == null)
            {
                AppLib.WriteLogErrorMessage("В системе не зарегистрирован ни один принтер!!");
                msgBoxText = AppLib.GetLangTextFromAppProp("printConfigError");
                return(false);
            }
            else
            {
                try
                {
                    string sLog = string.Join(Environment.NewLine + "\t", printers.Select(pq => pq.Name + ", status '" + getPrinterStatus(pq) + "', driver '" + pq.QueueDriver.Name + "'"));
                    AppLib.WriteLogTraceMessage("Системные принтеры: " + Environment.NewLine + "\t" + sLog);
                }
                catch (Exception) { }
            }

            // имя принтера для печати чека
            string printerName = null;
            string result      = null;

            #region поиск принтера для печати чека
            printerName = AppLib.GetAppSetting("PrinterName");
            PrintQueue printer = PrintHelper.GetPrintQueueByName(printerName);
            if (printer == null)
            {
                AppLib.WriteLogErrorMessage("В config-файле не указан элемент PrinterName или в системе не найден принтер: " + printerName);
                printerName = null;
            }
            else
            {
                result = getPrinterStatus(printer);
                AppLib.WriteLogTraceMessage($"Принтер '{printerName}' находится в состоянии '{result}'");
            }

            // если принтер из настроек не Ок, то берем принтер по умолчанию
            if ((printer == null) || ((result != null) && (result != "OK")))
            {
                AppLib.WriteLogTraceMessage("Предпринимается попытка использовать принтер по умолчанию...");
                printer = PrintHelper.GetDefaultPrinter();
                if ((printer != null) &&
                    ((printerName == null) || ((printerName != null) && (printer.Name != printerName))))
                {
                    printerName = printer.Name;
                    result      = getPrinterStatus(printer);
                    AppLib.WriteLogTraceMessage($"Найден принтер по умолчанию: {printerName}");
                    AppLib.WriteLogTraceMessage($"Принтер '{printerName}' находится в состоянии '{result}'");
                }
            }

            // если принтер по умолчанию не ОК, то берем первый в системе
            if (printer == null)
            {
                AppLib.WriteLogTraceMessage("Предпринимается попытка использовать первый найденный принтер в ОС...");
                printer = PrintHelper.GetFirstPrinter();
                if ((printer != null) &&
                    ((printerName == null) || ((printerName != null) && (printer.Name != printerName))))
                {
                    printerName = printer.Name;
                    result      = getPrinterStatus(printer);
                    AppLib.WriteLogTraceMessage($"Найден первый принтер: {printerName}");
                    AppLib.WriteLogTraceMessage($"Принтер '{printerName}' находится в состоянии '{result}'");
                }
            }
            // принтер не найден - досвидос
            if (printer == null)
            {
                msgBoxText = "App print error: not found any printer." + userErrMsgSuffix;
                return(false);
            }
            // найден, но статус не ОК - досвидос
            else if ((result != null) && (result != "OK"))
            {
                string sFormat = AppLib.GetLangTextFromAppProp("printerStatusMsg");
                if (sFormat != null)
                {
                    sFormat = sFormat.Replace("\\n", Environment.NewLine);
                }
                msgBoxText = string.Format(sFormat, printerName, result) + userErrMsgSuffix;
                return(false);
            }
            #endregion

            // создание документа
            AppLib.WriteLogTraceMessage($" Создаю документ для печати...");
            FlowDocument doc = null;
            try
            {
                doc = createDocument(width);
                AppLib.WriteLogTraceMessage($" - документ создан успешно");
            }
            catch (Exception ex)
            {
                result = AppLib.GetLangTextFromAppProp("afterPrintingErrMsg");
                if (result != null)
                {
                    result = result.Replace("\\n", Environment.NewLine);
                }
                msgBoxText = result + userErrMsgSuffix;
                AppLib.WriteLogErrorMessage(" Ошибка формирования документа: " + ex.ToString());
                return(false);
            }

            // имя задания на принтер
            string prnTaskName = "bill " + _order.OrderNumberForPrint.ToString();
            // вывод документа на принтер
            AppLib.WriteLogTraceMessage($" Вывожу пречек на принтер...");
            retVal = PrintHelper.PrintFlowDocument(doc, prnTaskName, printerName, out msgBoxText);
            if (retVal == false)
            {
                // сообщение об ошибке в лог
                AppLib.WriteLogErrorMessage(" Ошибка печати документа: " + msgBoxText);
                // и на экран пользователю
                result = AppLib.GetLangTextFromAppProp("afterPrintingErrMsg");
                if (result != null)
                {
                    result = result.Replace("\\n", Environment.NewLine);
                }
                msgBoxText = result + userErrMsgSuffix;
            }
            else
            {
                AppLib.WriteLogTraceMessage("Пречек распечатан успешно");
                if (msgBoxText != null)
                {
                    AppLib.WriteLogErrorMessage(msgBoxText);
                }
            }

            return(retVal);
        }
Exemplo n.º 4
0
 public string DefaultPrinter()
 {
     return(PrintHelper.GetDefaultPrinter());
 }