public void SaveSettings(Settings settings) { var dialog = new FormSaveSettings(); switch (dialog.Execute()) { case SaveResult.Current: GenericSerializer.Serialize(settings, FileNameHelper.CurrentConfigFileName); if (dialog.UpdateServiceSettings) { try { using (var connector = new TcpBinaryConnector<IManagementService>( settings.Services.ManagementService.Port, PublicNames.ManagementService)) { connector.RemoteObject.Settings = settings; } } catch (System.Net.Sockets.SocketException) { MessageBox.Show(_serviceConnectionFailed, ConstHelper.СonfigurationUtility, MessageBoxButtons.OK, MessageBoxIcon.Warning); } } break; case SaveResult.Export: GenericSerializer.Serialize(settings, dialog.FileName); break; } }
public void SaveSettings(Settings settings) { using (var connector = new EventSourceConnector(_terminalParams)) { connector.OpenConnector(); connector.Service.Settings = settings; connector.Service.EventLink.Post(EventSources.ManagementService, "Обновление конфигурации системы"); } }
public PrismaDataConverter(Settings terminalSettings, String mappingFileName) : base(terminalSettings) { // загружаем параметры сопоставления событий кассовой системы // пакету данных системы видеонаблюдения _space = GenericSerializer.Deserialize<MappingSpace>(mappingFileName); // создаем словарь с пользовательской логикой сопоставления // для полей пакета данных системы видеонаблюдения _customLogicByPacketField = new Dictionary<CustomLogicByPacketFieldKey, Func<EventData, SystemEvent, PacketField, String>>(); _customLogicByPacketField.Add( new CustomLogicByPacketFieldKey(0, "Префикс объекта"), (e, m, f) => "KKM"); _customLogicByPacketField.Add( new CustomLogicByPacketFieldKey(0, "Номер ККМ"), (e, m, f) => TerminalSettings.Common.CashNo.ToField(f.DataSize)); _customLogicByPacketField.Add( new CustomLogicByPacketFieldKey(0, "Код события"), (e, m, f) => m.ExternalId.ToField(f.DataSize)); _customLogicByPacketField.Add( new CustomLogicByPacketFieldKey(0, "Номер чека"), (e, m, f) => e.ToReceiptField().ToField(f.DataSize)); _customLogicByPacketField.Add( new CustomLogicByPacketFieldKey(0, "День"), (e, m, f) => DateTime.Today.ToString("dd").ToField(f.DataSize)); _customLogicByPacketField.Add( new CustomLogicByPacketFieldKey(0, "Месяц"), (e, m, f) => DateTime.Today.ToString("MM").ToField(f.DataSize)); _customLogicByPacketField.Add( new CustomLogicByPacketFieldKey(0, "Год"), (e, m, f) => DateTime.Today.ToString("yy").ToField(f.DataSize)); _customLogicByPacketField.Add( new CustomLogicByPacketFieldKey(0, "Милисекунды"), (e, m, f) => DateTime.Now.ToString("fff").ToField(f.DataSize)); _customLogicByPacketField.Add( new CustomLogicByPacketFieldKey(0, "Секунды"), (e, m, f) => DateTime.Now.ToString("ss").ToField(f.DataSize)); _customLogicByPacketField.Add( new CustomLogicByPacketFieldKey(0, "Минуты"), (e, m, f) => DateTime.Now.ToString("mm").ToField(f.DataSize)); _customLogicByPacketField.Add( new CustomLogicByPacketFieldKey(0, "Часы"), (e, m, f) => DateTime.Now.ToString("HH").ToField(f.DataSize)); _customLogicByPacketField.Add( new CustomLogicByPacketFieldKey(26, "Сумма чека"), (e, m, f) => e.ToAmountField().ToField(f.DataSize)); Func<EventData, SystemEvent, PacketField, String> getOriginalReceipt = (e, m, f) => e.ToOriginalReceiptField().ToField(f.DataSize); _customLogicByPacketField.Add( new CustomLogicByPacketFieldKey(53, "Номер чека"), getOriginalReceipt); _customLogicByPacketField.Add( new CustomLogicByPacketFieldKey(55, "Номер чека"), getOriginalReceipt); }
private static Settings Convert(String fileName) { var settings = new Settings(); var document = XDocument.Load(fileName); ConvertDatabase(document, settings); ConvertPayService(document, settings); ConvertCommon(document, settings); ConvertPrint(document, settings); ConvertOperations(document, settings); ConvertDiscounts(document, settings); ConvertBarcodeScanner(document, settings); ConvertCustomerDisplay(document, settings); ConvertScales(document, settings); ConvertManagementService(document, settings); ConvertExchangeService(document, settings); ConvertStatistics(document, settings); ConvertCashRegisters(document, settings); ConvertAdvertising(document, settings); ConvertBackupService(document, settings); ConvertExternalApps(document, settings); return settings; }
/// <summary> /// Создает экземпляр класса /// </summary> /// <param name="terminalSettings">Параметры терминала</param> public DefaultEventDataConverter(Settings terminalSettings) : base(terminalSettings) { }
private static void ConvertExternalApps(XDocument document, Settings settings) { settings.Applications.Items.Clear(); for (var i = 1; i <= 9; i++) { var groupName = String.Format("Внешнее приложение {0}", i); if (document.GroupExists(groupName)) { ConvertExternalApp(document, settings, groupName); } } }
private static void ConvertExternalApp(XDocument document, Settings settings, String groupName) { settings.Applications.Items.Add(new ExternalApplication { ExecutableName = document.ToString(String.Format("{0},Исполняемый файл", groupName)), Args = document.ToString(String.Format("{0},Аргументы командной строки", groupName)), Commentary = document.ToString(String.Format("{0},Комментарий", groupName)) }); }
private static void ConvertAdvertising(XDocument document, Settings settings) { settings.Advertising.AdvOnDisplay = document.ToBoolean("Рекламный текст,Показывать на дисплее покупателя"); settings.Advertising.AdvOnReceipt = document.ToBoolean("Рекламный текст,Печатать на чеках"); settings.Advertising.PauseBetweenMessages = document.ToInt32("Рекламный текст,Интервал смены сообщений"); }
private static void ConvertBackupService(XDocument document, Settings settings) { settings.Services.BackupService.BackupType = (BackupType)document.ToInt32("Резервное копирование,Периодичность"); settings.Services.BackupService.BackupStorage = document.ToString("Резервное копирование,Папка резервных копий"); settings.Services.BackupService.RemovePreviousBackup = document.ToBoolean("Резервное копирование,Удалять старые копии"); settings.Services.BackupService.BackupStartTime = DateTime.ParseExact( document.ToString("Резервное копирование,Начало копирования"), "HH.mm", null); settings.Services.BackupService.DayOfWeek = document.ToInt32("Резервное копирование,День недели"); settings.Services.BackupService.DayOfMonth = document.ToInt32("Резервное копирование,День месяца"); }
private static void ConvertCommon(XDocument document, Settings settings) { #region Разное settings.Common.CashNo = document.ToInt32("Общие,Номер кассы"); var match = Regex.Match(document.ToString("Общие,Шаблон ШК весового товара"), _barcodeTemplate); if (match.Success) { settings.Common.ScaleBarcodePrefixes = new String[] { match.Groups["Prefix"].Value }; settings.Common.ScaleBarcodeFormat.Clear(); settings.Common.ScaleBarcodeFormat.Add(new ScaleBarcodeGroup { GroupType = ScaleBarcodeGroupType.Prefix, GroupLength = match.Groups["Prefix"].Value.Length }); settings.Common.ScaleBarcodeFormat.Add(new ScaleBarcodeGroup { GroupType = ScaleBarcodeGroupType.Code, GroupLength = match.Groups["Article"].Value.Length }); settings.Common.ScaleBarcodeFormat.Add(new ScaleBarcodeGroup { GroupType = ScaleBarcodeGroupType.Quantity, GroupLength = match.Groups["Weight"].Value.Length }); settings.Common.ScaleBarcodeFormat.Add(new ScaleBarcodeGroup { GroupType = ScaleBarcodeGroupType.AnyValue, GroupLength = match.Groups["Control"].Value.Length }); } settings.Common.HideBarcodePrefixes = document.ToArray("Общие,Префиксы служебных штрихкодов"); settings.Common.PointId = document.ToString("Общие,Точка продажи"); settings.Common.FreeSaleVATRate = document.ToInt32("Общие,Ставка НДС свободной продажи"); settings.Common.InvoiceBarPrefix = document.ToString("Общие,Префикс ШК документов"); settings.Common.ExpiryControl = (ExpiryControlType)document.ToInt32("Общие,Контроль срока годности"); settings.Common.ChargeOwner = document.ToString("Общие,Фирма-владелец для оплаты услуг"); #endregion #region Сенсорный экран settings.View.ScreenKeyboard = document.ToBoolean("Общие,Экранная клавиатура"); settings.View.NavigationPanel = document.ToBoolean("Общие,Навигация по справочнику товаров"); settings.View.NavPanelHeight = document.ToInt32("Общие,Высота навигационной панели"); settings.View.NavItemHeight = document.ToInt32("Общие,Высота элемента"); settings.View.NavItemWidth = document.ToInt32("Общие,Ширина элемента"); settings.View.NavItemFontSize = document.ToInt32("Общие,Размер шрифта элемента"); #endregion #region Сообщения settings.Common.ErrorMessageBoxAutocloseInterval = document.ToInt32("Общие,Автозакрытие сообщений об ошибке"); settings.Common.MessageBoxAutocloseInterval = document.ToInt32("Общие,Автозакрытие прочих сообщений"); #endregion #region Флаги settings.Common.MinimizeQuantity = document.ToBoolean("Общие,Разрешить уменьшать количество"); settings.Common.WaitForDrawerClose = document.ToBoolean("Общие,Ждать закрытия ДЯ"); settings.View.FirstOnTop = document.ToBoolean("Общие,Первый товар вверху"); settings.Common.ZeroPrice = document.ToBoolean("Общие,Разрешить нулевую цену"); settings.Common.ExtractVAT = document.ToBoolean("Общие,Выделять НДС"); settings.Common.CurrentShiftReturnOnly = document.ToBoolean("Общие,Возврат только за текущую смену"); settings.Common.StrictCashierRegistration = document.ToBoolean("Общие,Строгий учет кассиров"); settings.View.InfoPanel = document.ToBoolean("Общие,Информационная панель"); settings.Common.BlockZReportIfDocOpened = document.ToBoolean("Общие,Блокировка Z-отчета при открытом чеке"); settings.Common.AllowShutdownFromShell = document.ToBoolean("Общие,Завершать работу из загрузчика"); settings.Common.UseReserveControlTape = document.ToBoolean("Общие,Резервная контрольная лента"); #endregion }
private static void ConvertDiscounts(XDocument document, Settings settings) { settings.Discounts.AutoDiscounts = document.ToBoolean("Скидки,Автоматические скидки"); settings.Discounts.PersonalDiscounts = document.ToBoolean("Скидки,Персональные скидки"); settings.Discounts.MixDiscounts = document.ToBoolean("Скидки,Смешивать скидки"); settings.Discounts.RoundType = (ReceiptRoundType)document.ToInt32("Скидки,Округление суммы чека"); settings.Discounts.RoundDigit = document.ToInt32("Скидки,Разряд округления"); settings.Discounts.AutoExtraCharge = document.ToBoolean("Скидки,Авт. наценка чека"); settings.Discounts.UsePayService = document.ToBoolean("Скидки,Использовать ПДС"); }
private static void ConvertStatistics(XDocument document, Settings settings) { settings.Statistics.EnableEventlog = document.ToBoolean("Статистика,Журнал кассовых операций"); settings.Statistics.StatParams.Clear(); var protocolParams = document.ToArray("Статистика,Параметры"); foreach (var protocolName in document.ToArray("Статистика,Протоколы")) { var protocol = new LoggerProtocol { Name = protocolName }; foreach (var protocolParam in protocolParams .Where(s => s.StartsWith(protocolName)) .Select(s => { var paramParts = s.PureSplit('?'); return paramParts.Length == 2 ? paramParts[1] : String.Empty; })) { var paramNameAndValue = protocolParam.PureSplit('='); if (paramNameAndValue.Length == 2) { protocol.Params.Add(new ProtocolParameter { Name = paramNameAndValue[0], Value = paramNameAndValue[1] }); } } settings.Statistics.StatParams.Add(protocol); } }
/// <summary> /// Создает экземпляр класса /// </summary> /// <param name="terminalSettings">Параметры терминала</param> protected CustomEventDataConverter(Settings terminalSettings) { TerminalSettings = terminalSettings; }
private static void ConvertManagementService(XDocument document, Settings settings) { settings.Services.ManagementService.Port = document.ToInt32("Служба управления POS,Порт"); settings.Services.ManagementService.User = document.ToString("Служба управления POS,Пользователь"); settings.Services.ManagementService.Password = document.ToString("Служба управления POS,Пароль"); settings.Services.ManagementService.Domain = document.ToString("Служба управления POS,Домен"); settings.Services.ManagementService.EventlogExpiry = document.ToInt32("Служба управления POS,Срок хранения журналов"); }
private static void ConvertExchangeService(XDocument document, Settings settings) { settings.Services.ExchangeService.Port = document.ToInt32("Служба обмена данными,Порт"); settings.Services.ExchangeService.IgnoreUsers = document.ToBoolean("Служба обмена данными,Встроенный редактор прав пользователей"); }
private static void ConvertScales(XDocument document, Settings settings) { settings.Hardware.Scales.Clear(); var protocol = document.ToString("Внешние модули,Весы"); if (!String.IsNullOrEmpty(protocol)) { settings.Hardware.Scales.Add(new Scales { Port = document.ToInt32("Весы,Номер порта"), Baud = document.ToInt32("Весы,Скорость"), Id = "ВесыПоУмолчанию", IsDefault = true, ProtocolType = protocol }); } }
private static void ConvertCustomerDisplay(XDocument document, Settings settings) { settings.Hardware.Displays.Clear(); var protocol = document.ToString("Внешние модули,Дисплей покупателя"); if (!String.IsNullOrEmpty(protocol)) { var display = new CustomerDisplay { ProtocolType = protocol, Baud = document.ToInt32("Дисплей покупателя,Скорость") }; display.Port = document.ToBoolean("Дисплей покупателя,Не использует COM-порт") ? -1 : document.ToInt32("Дисплей покупателя,Номер порта"); settings.Hardware.Displays.Add(display); } }
private static void ConvertBarcodeScanner(XDocument document, Settings settings) { settings.Common.ExpandBarcodesToEAN13 = document.ToBoolean("Сканер штрих-кода,Дополнять ШК до EAN-13"); settings.Hardware.Scanners.Clear(); if (!document.ToBoolean("Сканер штрих-кода,Отключен")) { settings.Hardware.Scanners.Add(new BarcodeScanner { Port = document.ToInt32("Сканер штрих-кода,Номер порта"), Baud = document.ToInt32("Сканер штрих-кода,Скорость"), Suffix = document.ToInt32("Сканер штрих-кода,Стоп-символ"), Parity = (Parity)document.ToInt32("Сканер штрих-кода,Четность") }); } }
/// <summary> /// Создает экземпляр класса /// </summary> /// <param name="terminalSettings">Параметры терминала</param> /// <param name="maskPasswords">Маскировать пароли</param> public POSIntellectEventDataConvertert(Settings terminalSettings, Boolean maskPasswords) : base(terminalSettings) { _maskPaswords = maskPasswords; }
private static void ConvertPayService(XDocument document, Settings settings) { settings.PayService.Server = document.ToString("Безналичный расчет,Сервер"); settings.PayService.Port = document.ToInt32("Безналичный расчет,Порт"); settings.PayService.AcceptCards = document.ToBoolean("Безналичный расчет,Разрешить безнал"); }
private static void ConvertPrint(XDocument document, Settings settings) { settings.Print.Flags = document.ToArray("Печать,Параметры печати"); settings.Print.AutoPrintFlags = document.ToArray("Печать,Печать документов при закрытии чека"); settings.Print.ReceiptPrefix = document.ToString("Печать,Префикс ШК чеков"); settings.Print.Separator = document.ToString("Печать,Разделитель")[0]; settings.Print.RegisterBySections = document.ToBoolean("Печать,Регистрация по секциям"); settings.Print.ByNotes = document.ToBoolean("Печать,Печать покупюрной описи"); settings.Print.ChargeSlip = document.ToBoolean("Печать,Печать слипа при оплате услуг"); settings.Print.ClicheFromDatabase = document.ToBoolean("Печать,Клише по данным справочника"); settings.Print.AutoPrintSystemBalance = document.ToBoolean("Печать,Печатать системный баланс"); settings.Print.ShortSystemBalance = document.ToBoolean("Печать,Сокращенный системный баланс"); settings.Print.PrintBalanceInPoints = document.ToBoolean("Печать,Печатать баланс карты в баллах"); settings.Print.PrintSummary = document.ToBoolean("Печать,Печатать итоговый чек"); settings.Print.IgnoreEcrCashCounter = document.ToBoolean("Печать,Игнорировать счетчик наличности ФР"); }
private static void ConvertCashRegister(XDocument document, Settings settings, String protocol, String groupName) { settings.Hardware.CashRegisters.Add(new CashRegister { ProtocolType = protocol, InvertDrawerStatus = document.ToBoolean("Общие,Инвертировать состояние ДЯ"), ErrorsIgnoreList = document.ToArray("Печать,Игнорировать ошибки ФР"), ClicheAfterNonFiscal = document.ToBoolean("Печать,Печатать клише после нефиск. док."), OwnerId = document.ToString(String.Format("{0},Юр. лицо", groupName)), Port = document.ToInt32(String.Format("{0},Номер порта", groupName)), Baud = document.ToInt32(String.Format("{0},Скорость", groupName)), IsDefault = document.ToBoolean(String.Format("{0},По умолчанию", groupName)), Header = document.ToArray(String.Format("{0},Клише чека", groupName)), Footer = document.ToArray(String.Format("{0},Подвал чека", groupName)) }); }
private static void ConvertCashRegisters(XDocument document, Settings settings) { settings.Hardware.CashRegisters.Clear(); var protocol = document.ToString("Внешние модули,Фискальный регистратор"); if (!String.IsNullOrEmpty(protocol)) { for (var i = 1; i <= 2; i++) { var groupName = String.Format("Фискальный регистратор {0}", i); if (document.GroupExists(groupName)) { ConvertCashRegister(document, settings, protocol, groupName); } } } }
private static void ConvertOperations(XDocument document, Settings settings) { settings.Operations.CancelReceipt = (CashSecurityPermission)document.ToInt32("Операции,Аннулировать чек"); settings.Operations.ChangeQuantity = (CashSecurityPermission)document.ToInt32("Операции,Ввод количества"); settings.Operations.DeletePosition = (CashSecurityPermission)document.ToInt32("Операции,Ошибка в чеке"); settings.Operations.OpenDrawer = (CashSecurityPermission)document.ToInt32("Операции,Открытие ДЯ"); settings.Operations.ReceiptReturn = (CashSecurityPermission)document.ToInt32("Операции,Возврат"); settings.Operations.ReceiptSuspend = (CashSecurityPermission)document.ToInt32("Операции,Отложить чек"); settings.Operations.ReceiptResume = (CashSecurityPermission)document.ToInt32("Операции,Продолжить отложенный чек"); settings.Operations.FindByName = (CashSecurityPermission)document.ToInt32("Операции,Поиск по наименованию"); settings.Operations.FreeSale = (CashSecurityPermission)document.ToInt32("Операции,Свободная продажа"); settings.Operations.FindByArticle = (CashSecurityPermission)document.ToInt32("Операции,Поиск по артикулу"); }
/// <summary> /// Создает экземпляр конфигурации системы и инициализирует его значениями по умолчанию /// </summary> /// <returns>Экземпляр конфигурации системы</returns> public static Settings CreateInstance() { var settings = new Settings(); // инициализация конфигурации значениями по умолчанию // весовой шрихкод settings.Common.ScaleBarcodeFormat.Add(new ScaleBarcodeGroup { GroupType = ScaleBarcodeGroupType.Prefix, GroupLength = 2 }); settings.Common.ScaleBarcodeFormat.Add(new ScaleBarcodeGroup { GroupType = ScaleBarcodeGroupType.Code, GroupLength = 5 }); settings.Common.ScaleBarcodeFormat.Add(new ScaleBarcodeGroup { GroupType = ScaleBarcodeGroupType.Quantity, GroupLength = 5 }); settings.Common.ScaleBarcodeFormat.Add(new ScaleBarcodeGroup { GroupType = ScaleBarcodeGroupType.AnyValue, GroupLength = 1 }); // внешние приложения settings.Applications.Items.Add(new ExternalApplication { Commentary = "Командная строка", ExecutableName = "cmd.exe" }); settings.Applications.Items.Add(new ExternalApplication { Commentary = "Диспетчер задач", ExecutableName = "taskmgr.exe" }); settings.Applications.Items.Add(new ExternalApplication { Commentary = "Проводник", ExecutableName = "explorer.exe" }); return settings; }
private static void ConvertDatabase(XDocument document, Settings settings) { settings.Database.Service = document.ToString("База данных,Имя службы сервера БД"); settings.Database.DatabaseFile = document.ToString("База данных,Имя файла"); settings.Database.User = document.ToString("База данных,Пользователь"); settings.Database.Password = document.ToString("База данных,Пароль"); }