Ejemplo n.º 1
0
        private void btnBack_Click(object sender, EventArgs e)
        {
            HistoryMain histMain = new HistoryMain();

            histMain.Show();
            this.Hide();
        }
Ejemplo n.º 2
0
        private void button6_Click(object sender, EventArgs e)
        {
            HistoryMain main = new HistoryMain();

            main.Show();
            this.Hide();
        }
Ejemplo n.º 3
0
        private void button7_Click(object sender, EventArgs e)
        {
            HistoryMain history = new HistoryMain();

            history.Show();
            this.Hide();
        }
Ejemplo n.º 4
0
        private void CreateBaseConfig()
        {
            _logger.LogInformation("Настройка параметров Nhibernate...");

            var conStrBuilder = new MySqlConnectionStringBuilder();

            var domainDBConfig = Configuration.GetSection("DomainDB");

            conStrBuilder.Server   = domainDBConfig.GetValue <string>("Server");
            conStrBuilder.Port     = domainDBConfig.GetValue <uint>("Port");
            conStrBuilder.Database = domainDBConfig.GetValue <string>("Database");
            conStrBuilder.UserID   = domainDBConfig.GetValue <string>("UserID");
            conStrBuilder.Password = domainDBConfig.GetValue <string>("Password");
            conStrBuilder.SslMode  = MySqlSslMode.None;

            var connectionString = conStrBuilder.GetConnectionString(true);

            var db_config = FluentNHibernate.Cfg.Db.MySQLConfiguration.Standard
                            .Dialect <MySQL57SpatialExtendedDialect>()
                            .ConnectionString(connectionString)
                            .AdoNetBatchSize(100);

            // Настройка ORM
            OrmConfig.ConfigureOrm(
                db_config,
                new System.Reflection.Assembly[]
            {
                System.Reflection.Assembly.GetAssembly(typeof(QS.Project.HibernateMapping.UserBaseMap)),
                System.Reflection.Assembly.GetAssembly(typeof(QS.Project.HibernateMapping.TypeOfEntityMap)),
                System.Reflection.Assembly.GetAssembly(typeof(Vodovoz.HibernateMapping.OrganizationMap)),
                System.Reflection.Assembly.GetAssembly(typeof(Bank)),
                System.Reflection.Assembly.GetAssembly(typeof(HistoryMain)),
                System.Reflection.Assembly.GetAssembly(typeof(Attachment))
            }
                );

            var serviceUserId = 0;

            using (var unitOfWork = UnitOfWorkFactory.CreateWithoutRoot("Получение пользователя"))
            {
                serviceUserId = unitOfWork.Session.Query <Vodovoz.Domain.Employees.User>()
                                .Where(u => u.Login == domainDBConfig.GetValue <string>("UserID"))
                                .Select(u => u.Id)
                                .FirstOrDefault();
            }

            QS.Project.Repositories.UserRepository.GetCurrentUserId = () => serviceUserId;

            HistoryMain.Enable();
        }
Ejemplo n.º 5
0
        public override void CompareType(CompareParms parms)
        {
            if (parms.ParentObject1 == null || parms.ParentObject2 == null)
            {
                base.CompareType(parms);
                return;
            }

            PropertyInfo prop1 = null, prop2 = null;

            if (parms.Object1 != null)
            {
                prop1 = parms.Object1.GetType().GetProperty("Id");
            }
            if (parms.Object2 != null)
            {
                prop2 = parms.Object2.GetType().GetProperty("Id");
            }

            if (prop1 != null && prop2 != null &&
                (int)prop1.GetValue(parms.Object1, null) == (int)prop2.GetValue(parms.Object2, null))
            {
                if (parms.ParentObject1 is IList)
                {
                    base.CompareType(parms);
                }
                return;
            }

            Difference difference = new Difference
            {
                ParentObject1     = parms.ParentObject1,
                ParentObject2     = parms.ParentObject2,
                PropertyName      = parms.BreadCrumb,
                Object1Value      = parms.Object1 == null ? String.Empty : HistoryMain.GetObjectTilte(parms.Object1),
                Object2Value      = parms.Object2 == null ? String.Empty : HistoryMain.GetObjectTilte(parms.Object2),
                ChildPropertyName = "Id",
                Object1           = parms.Object1,
                Object2           = parms.Object2
            };

            AddDifference(parms.Result, difference);
        }
Ejemplo n.º 6
0
        static bool EntityCompare(ref FieldChange change, object valueOld, object valueNew)
        {
            if (DomainHelper.EqualDomainObjects(valueOld, valueNew))
            {
                return(false);
            }

            change = new FieldChange();
            if (valueOld != null)
            {
                change.OldValue = HistoryMain.GetObjectTilte(valueOld);
                change.OldId    = DomainHelper.GetId(valueOld);
            }
            if (valueNew != null)
            {
                change.NewValue = HistoryMain.GetObjectTilte(valueNew);
                change.NewId    = DomainHelper.GetId(valueNew);
            }
            return(true);
        }
        public void CreateApplicationConfig()
        {
            logger.Debug("Конфигурация маппингов диалогов, HistoryTrace, принтеров и ParentReference...");

            #region Dialogs mapping

            OrmMain.ClassMappingList = new List <IOrmObjectMapping> {
                //Простые справочники
                OrmObjectMapping <CullingCategory> .Create().DefaultTableView().SearchColumn("Название", x => x.Name).End(),
                OrmObjectMapping <Nationality> .Create().DefaultTableView().SearchColumn("Название", x => x.Name).End(),
                OrmObjectMapping <Citizenship> .Create().DefaultTableView().SearchColumn("Название", x => x.Name).End(),
                OrmObjectMapping <Manufacturer> .Create().DefaultTableView().SearchColumn("Название", x => x.Name).End(),
                OrmObjectMapping <EquipmentColors> .Create().DefaultTableView().SearchColumn("Название", x => x.Name).End(),
                OrmObjectMapping <User> .Create().DefaultTableView().SearchColumn("Название", x => x.Name).End(),
                OrmObjectMapping <UserSettings> .Create().Dialog <UserSettingsView>(),
                OrmObjectMapping <FuelType> .Create().Dialog <FuelTypeViewModel>().DefaultTableView()
                .SearchColumn("Название", x => x.Name).End(),
                OrmObjectMapping <MovementWagon> .Create().Dialog <MovementWagonViewModel>().DefaultTableView()
                .SearchColumn("Название", x => x.Name).End(),
                //Остальные справочники
                OrmObjectMapping <CarProxyDocument> .Create().Dialog <CarProxyDlg>(),
                OrmObjectMapping <M2ProxyDocument> .Create().Dialog <M2ProxyDlg>(),
                OrmObjectMapping <ProductGroup> .Create().Dialog <ProductGroupDlg>(),
                OrmObjectMapping <CommentTemplate> .Create().Dialog <CommentTemplateDlg>().DefaultTableView()
                .SearchColumn("Шаблон комментария", x => x.Comment).End(),
                OrmObjectMapping <FineTemplate> .Create().Dialog <FineTemplateDlg>().DefaultTableView()
                .SearchColumn("Шаблон комментария", x => x.Reason).End(),
                OrmObjectMapping <MeasurementUnits> .Create().Dialog <MeasurementUnitsDlg>().DefaultTableView()
                .SearchColumn("ОКЕИ", x => x.OKEI).SearchColumn("Название", x => x.Name).Column("Точность", x => x.Digits.ToString())
                .End(),
                OrmObjectMapping <Contact> .Create().Dialog <ContactDlg>()
                .DefaultTableView().SearchColumn("Фамилия", x => x.Surname).SearchColumn("Имя", x => x.Name)
                .SearchColumn("Отчество", x => x.Patronymic).End(),
                OrmObjectMapping <Order> .Create().Dialog <OrderDlg>().PopupMenu(OrderPopupMenu.GetPopupMenu),
                OrmObjectMapping <UndeliveredOrder> .Create().Dialog <UndeliveredOrderDlg>(),
                OrmObjectMapping <Organization> .Create().Dialog <OrganizationDlg>().DefaultTableView().Column("Код", x => x.Id.ToString())
                .SearchColumn("Название", x => x.Name).End(),
                OrmObjectMapping <DeliverySchedule> .Create().Dialog <DeliveryScheduleDlg>().DefaultTableView()
                .SearchColumn("Название", x => x.Name)
                .SearchColumn("Время доставки", x => x.DeliveryTime)
                .Column("Архивный?", x => x.IsArchive ? "Да" : string.Empty)
                .OrderAsc(x => x.IsArchive).OrderAsc(x => x.From).OrderAsc(x => x.To)
                .End(),
                OrmObjectMapping <ProductSpecification> .Create().Dialog <ProductSpecificationDlg>().DefaultTableView()
                .SearchColumn("Код", x => x.Id.ToString()).SearchColumn("Название", x => x.Name).End(),
                OrmObjectMapping <EquipmentKind> .Create().Dialog <EquipmentKindDlg>().DefaultTableView()
                .Column("Название", equipmentKind => equipmentKind.Name).End(),
                //Связанное с клиентом
                OrmObjectMapping <Proxy> .Create().Dialog <ProxyDlg>()
                .DefaultTableView().SearchColumn("Номер", x => x.Number).SearchColumn("С", x => x.StartDate.ToShortDateString())
                .SearchColumn("По", x => x.ExpirationDate.ToShortDateString()).End(),
                OrmObjectMapping <PaidRentPackage> .Create().Dialog <PaidRentPackageDlg>()
                .DefaultTableView().SearchColumn("Название", x => x.Name).Column("Вид оборудования", x => x.EquipmentKind.Name)
                .SearchColumn("Цена в сутки", x => CurrencyWorks.GetShortCurrencyString(x.PriceDaily))
                .SearchColumn("Цена в месяц", x => CurrencyWorks.GetShortCurrencyString(x.PriceMonthly)).End(),
                OrmObjectMapping <FreeRentPackage> .Create().Dialog <FreeRentPackageDlg>().DefaultTableView()
                .SearchColumn("Название", x => x.Name).Column("Вид оборудования", x => x.EquipmentKind.Name).OrderAsc(x => x.Name)
                .End(),
                OrmObjectMapping <Counterparty> .Create().Dialog <CounterpartyDlg>().DefaultTableView()
                .SearchColumn("Название", x => x.FullName).End(),
                OrmObjectMapping <Tag> .Create().Dialog <TagDlg>().DefaultTableView().SearchColumn("Название", x => x.Name).End(),
                OrmObjectMapping <CounterpartyContract> .Create().Dialog <CounterpartyContractDlg>(),
                OrmObjectMapping <DocTemplate> .Create().Dialog <DocTemplateDlg>().DefaultTableView().SearchColumn("Название", x => x.Name)
                .Column("Тип", x => x.TemplateType.GetEnumTitle()).End(),
                OrmObjectMapping <TransferOperationDocument> .Create().Dialog <TransferOperationDocumentDlg>(),
                //Справочники с фильтрами
                OrmObjectMapping <Equipment> .Create().Dialog <EquipmentDlg>().JournalFilter <EquipmentFilter>()
                .DefaultTableView().Column("Код", x => x.Id.ToString()).SearchColumn("Номенклатура", x => x.NomenclatureName)
                .Column("Тип", x => x.Nomenclature.Kind.Name).SearchColumn("Серийный номер", x => x.Serial)
                .Column("Дата последней обработки", x => x.LastServiceDate.ToShortDateString()).End(),
                //Логисткика
                OrmObjectMapping <RouteList> .Create().Dialog <RouteListCreateDlg>()
                .DefaultTableView().SearchColumn("Номер", x => x.Id.ToString()).Column("Дата", x => x.Date.ToShortDateString())
                .Column("Статус", x => x.Status.GetEnumTitle())
                .SearchColumn("Водитель", x => String.Format("{0} - {1}", x.Driver.FullName, x.Car.Title)).End(),
                OrmObjectMapping <RouteColumn> .Create().DefaultTableView().Column("Код", x => x.Id.ToString())
                .SearchColumn("Название", x => x.Name).End(),
                OrmObjectMapping <DeliveryShift> .Create().Dialog <DeliveryShiftDlg>().DefaultTableView().SearchColumn("Название", x => x.Name)
                .SearchColumn("Диапазон времени", x => x.DeliveryTime).End(),
                OrmObjectMapping <DeliveryDaySchedule> .Create().Dialog <DeliveryDayScheduleDlg>().DefaultTableView()
                .SearchColumn("Название", x => x.Name).End(),
                //Сервис
                OrmObjectMapping <ServiceClaim> .Create().Dialog <ServiceClaimDlg>().DefaultTableView().Column("Номер", x => x.Id.ToString())
                .Column("Тип", x => x.ServiceClaimType.GetEnumTitle()).Column("Оборудование", x => x.Equipment.Title)
                .Column("Подмена", x => x.ReplacementEquipment != null ? "Да" : "Нет")
                .Column("Точка доставки", x => x.DeliveryPoint.Title).End(),
                //Касса
                OrmObjectMapping <Income> .Create().Dialog <CashIncomeDlg>(),
                OrmObjectMapping <ExpenseCategory> .Create().Dialog <ExpenseCategoryViewModel>().DefaultTableView()
                .Column("Код", x => x.Id.ToString()).SearchColumn("Название", e => e.Name)
                .Column("Тип документа", e => e.ExpenseDocumentType.GetEnumTitle())
                .TreeConfig(new RecursiveTreeConfig <ExpenseCategory>(x => x.Parent, x => x.Childs)).End(),
                OrmObjectMapping <Expense> .Create().Dialog <CashExpenseDlg>(),
                OrmObjectMapping <AdvanceReport> .Create().Dialog <AdvanceReportDlg>(),
                OrmObjectMapping <Fine> .Create().Dialog <FineDlg>(),
                OrmObjectMapping <IncomeCashTransferDocument> .Create().Dialog <IncomeCashTransferDlg>(),
                OrmObjectMapping <CommonCashTransferDocument> .Create().Dialog <CommonCashTransferDlg>(),
                //Банкинг
                OrmObjectMapping <AccountIncome> .Create(),
                OrmObjectMapping <AccountExpense> .Create(),
                //Склад
                OrmObjectMapping <Warehouse> .Create().Dialog <WarehouseDlg>().DefaultTableView().Column("Название", w => w.Name)
                .Column("В архиве", w => w.IsArchive ? "Да" : "").End(),
                OrmObjectMapping <RegradingOfGoodsTemplate> .Create().Dialog <RegradingOfGoodsTemplateDlg>().DefaultTableView()
                .Column("Название", w => w.Name).End(),
                OrmObjectMapping <CarEventType> .Create().Dialog <CarEventTypeViewModel>()
            };

            #region Складские документы

            OrmMain.AddObjectDescription <IncomingWater>().Dialog <IncomingWaterDlg>();
            OrmMain.AddObjectDescription <WriteoffDocument>().Dialog <WriteoffDocumentDlg>();
            OrmMain.AddObjectDescription <InventoryDocument>().Dialog <InventoryDocumentDlg>();
            OrmMain.AddObjectDescription <ShiftChangeWarehouseDocument>().Dialog <ShiftChangeWarehouseDocumentDlg>();
            OrmMain.AddObjectDescription <RegradingOfGoodsDocument>().Dialog <RegradingOfGoodsDocumentDlg>();
            OrmMain.AddObjectDescription <SelfDeliveryDocument>().Dialog <SelfDeliveryDocumentDlg>();
            OrmMain.AddObjectDescription <CarLoadDocument>().Dialog <CarLoadDocumentDlg>();
            OrmMain.AddObjectDescription <CarUnloadDocument>().Dialog <CarUnloadDocumentDlg>();

            #endregion

            #region Goods

            OrmMain.AddObjectDescription <Nomenclature>().Dialog <NomenclatureDlg>().JournalFilter <NomenclatureFilter>().DefaultTableView()
            .SearchColumn("Код", x => x.Id.ToString())
            .SearchColumn("Название", x => x.Name)
            .Column("Тип", x => x.CategoryString)
            .SearchColumn("Номер в ИМ", x => x.OnlineStoreExternalId)
            .End();
            OrmMain.AddObjectDescription <Folder1c>().Dialog <Folder1cDlg>()
            .DefaultTableView()
            .SearchColumn("Код 1С", x => x.Code1c)
            .SearchColumn("Название", x => x.Name)
            .TreeConfig(new RecursiveTreeConfig <Folder1c>(x => x.Parent, x => x.Childs)).End();

            #endregion

            #region Простые справочники

            OrmMain.AddObjectDescription <GeographicGroup>()
            .Dialog <GeographicGroupDlg>()
            .DefaultTableView()
            .SearchColumn("Название", x => x.Name)
            .Column("Код", x => x.Id.ToString())
            .End();
            OrmMain.AddObjectDescription <NonReturnReason>()
            .DefaultTableView()
            .SearchColumn("Код", x => x.Id.ToString())
            .SearchColumn("Название", x => x.Name)
            .End();
            OrmMain.AddObjectDescription <PaymentFrom>()
            .DefaultTableView()
            .SearchColumn("Код", x => x.Id.ToString())
            .SearchColumn("Название", x => x.Name)
            .End();
            OrmMain.AddObjectDescription <Post>()
            .DefaultTableView()
            .SearchColumn("Код", x => x.Id.ToString())
            .SearchColumn("Название", x => x.Name)
            .End();
            OrmMain.AddObjectDescription <SalesChannel>()
            .DefaultTableView()
            .SearchColumn("Код", x => x.Id.ToString())
            .SearchColumn("Название", x => x.Name)
            .End();

            #endregion

            #region неПростые справочники

            OrmMain.AddObjectDescription <Subdivision>().Dialog <SubdivisionDlg>().DefaultTableView().SearchColumn("Название", x => x.Name)
            .Column("Руководитель", x => x.Chief == null ? "" : x.Chief.ShortName).SearchColumn("Номер", x => x.Id.ToString())
            .TreeConfig(new RecursiveTreeConfig <Subdivision>(x => x.ParentSubdivision, x => x.ChildSubdivisions)).End();
            OrmMain.AddObjectDescription <TypeOfEntity>()
            .Dialog <TypeOfEntityDlg>()
            .DefaultTableView()
            .SearchColumn("Тип документа", x => TypeOfEntityRepository.GetEntityNameByString(x.Type))
            .SearchColumn("Название документа", x => x.CustomName)
            .SearchColumn("Код", x => x.Id.ToString())
            .Column("Активно", x => !x.IsActive ? "нет" : String.Empty)
            .SearchColumn("Имя класса", x => x.Type)
            .OrderAsc(x => x.CustomName)
            .End();
            OrmMain.AddObjectDescription <Trainee>().Dialog <TraineeDlg>().DefaultTableView()
            .Column("Код", x => x.Id.ToString())
            .SearchColumn("Ф.И.О.", x => x.FullName)
            .OrderAsc(x => x.LastName).OrderAsc(x => x.Name).OrderAsc(x => x.Patronymic)
            .End();
            OrmMain.AddObjectDescription <DeliveryPriceRule>().Dialog <DeliveryPriceRuleDlg>().DefaultTableView()
            .Column("< 19л б.", x => x.Water19LCount.ToString())
            .Column("< 6л б.", x => x.Water6LCount)
            .Column("< 1,5л б.", x => x.Water1500mlCount)
            .Column("< 0,6л б.", x => x.Water600mlCount)
            .Column("< 0,5л б.", x => x.Water500mlCount)
            .Column("Минимальная сумма заказа", x => x.OrderMinSumEShopGoods.ToString())
            .SearchColumn("Описание правила", x => x.Title)
            .End();
            OrmMain.AddObjectDescription <Certificate>().Dialog <CertificateDlg>().DefaultTableView()
            .SearchColumn("Имя", x => x.Name)
            .Column("Тип", x => x.TypeOfCertificate.GetEnumTitle())
            .SearchColumn("Номер", x => x.Id.ToString())
            .SearchColumn("Начало срока", x => x.StartDate.HasValue ? x.StartDate.Value.ToString("dd.MM.yyyy") : "Ошибка!")
            .SearchColumn("Окончание срока",
                          x => x.ExpirationDate.HasValue ? x.ExpirationDate.Value.ToString("dd.MM.yyyy") : "Бессрочно")
            .Column("Архивный?", x => x.IsArchive ? "Да" : string.Empty)
            .OrderAsc(x => x.IsArchive)
            .OrderAsc(x => x.Id)
            .End();
            OrmMain.AddObjectDescription <StoredResource>().Dialog <ImageLoaderDlg>().DefaultTableView()
            .SearchColumn("Номер", x => x.Id.ToString())
            .SearchColumn("Название", x => x.Name)
            .End();
            OrmMain.AddObjectDescription <DeliveryPointCategory>().Dialog <DeliveryPointCategoryDlg>().DefaultTableView()
            .SearchColumn("Код", x => x.Id.ToString())
            .SearchColumn("Название", x => x.Name)
            .Column("В архиве?", x => x.IsArchive ? "Да" : "Нет")
            .OrderAsc(x => x.Name)
            .End();
            OrmMain.AddObjectDescription <CounterpartyActivityKind>().Dialog <CounterpartyActivityKindDlg>().DefaultTableView()
            .SearchColumn("Код", x => x.Id.ToString())
            .SearchColumn("Название", x => x.Name)
            .End();

            #endregion

            OrmMain.ClassMappingList.AddRange(QSBanks.QSBanksMain.GetModuleMaping());

            #endregion

            HistoryMain.Enable();
            TemplatePrinter.InitPrinter();
            ImagePrinter.InitPrinter();

            logger.Debug("OK");
        }
Ejemplo n.º 8
0
        static void CreateBaseConfig()
        {
            logger.Info("Настройка параметров базы...");
            //Увеличиваем таймоут
            QSMain.ConnectionString += ";ConnectionTimeout=120";

            var db_config = FluentNHibernate.Cfg.Db.MySQLConfiguration.Standard
                            .Dialect <MySQL57SpatialExtendedDialect>()
                            .ConnectionString(QSMain.ConnectionString)
                            .AdoNetBatchSize(100)
                            .Driver <LoggedMySqlClientDriver>();

            // Настройка ORM
            OrmConfig.ConfigureOrm(
                db_config,
                new System.Reflection.Assembly[] {
                System.Reflection.Assembly.GetAssembly(typeof(QS.Project.HibernateMapping.UserBaseMap)),
                System.Reflection.Assembly.GetAssembly(typeof(HibernateMapping.OrganizationMap)),
                System.Reflection.Assembly.GetAssembly(typeof(Bank)),
                System.Reflection.Assembly.GetAssembly(typeof(HistoryMain)),
            },
                (cnf) => {
                cnf.DataBaseIntegration(
                    dbi => {
                    dbi.BatchSize = 100;
                    dbi.Batcher <MySqlClientBatchingBatcherFactory>();
                }
                    );
            }
                );
            #region Dialogs mapping

            OrmMain.ClassMappingList = new List <IOrmObjectMapping> {
                //Простые справочники
                OrmObjectMapping <CullingCategory> .Create().DefaultTableView().SearchColumn("Название", x => x.Name).End(),
                OrmObjectMapping <Nationality> .Create().DefaultTableView().SearchColumn("Название", x => x.Name).End(),
                OrmObjectMapping <Citizenship> .Create().DefaultTableView().SearchColumn("Название", x => x.Name).End(),
                OrmObjectMapping <Manufacturer> .Create().DefaultTableView().SearchColumn("Название", x => x.Name).End(),
                OrmObjectMapping <EquipmentColors> .Create().DefaultTableView().SearchColumn("Название", x => x.Name).End(),
                OrmObjectMapping <User> .Create().DefaultTableView().SearchColumn("Название", x => x.Name).End(),
                OrmObjectMapping <UserSettings> .Create().Dialog <UserSettingsView>(),
                OrmObjectMapping <FuelType> .Create().Dialog <FuelTypeDlg>().DefaultTableView().SearchColumn("Название", x => x.Name).SearchColumn("Стоимость", x => x.Cost.ToString()).End(),
                OrmObjectMapping <MovementWagon> .Create().Dialog <MovementWagonViewModel>().DefaultTableView().SearchColumn("Название", x => x.Name).End(),
                //Остальные справочники
                OrmObjectMapping <CarProxyDocument> .Create().Dialog <CarProxyDlg>(),
                OrmObjectMapping <M2ProxyDocument> .Create().Dialog <M2ProxyDlg>(),
                OrmObjectMapping <ProductGroup> .Create().Dialog <ProductGroupDlg>(),
                OrmObjectMapping <CommentTemplate> .Create().Dialog <CommentTemplateDlg>().DefaultTableView().SearchColumn("Шаблон комментария", x => x.Comment).End(),
                OrmObjectMapping <FineTemplate> .Create().Dialog <FineTemplateDlg>().DefaultTableView().SearchColumn("Шаблон комментария", x => x.Reason).End(),
                OrmObjectMapping <PremiumTemplate> .Create().Dialog <PremiumTemplateDlg>().DefaultTableView().SearchColumn("Шаблон комментария", x => x.Reason).End(),
                OrmObjectMapping <MeasurementUnits> .Create().Dialog <MeasurementUnitsDlg>().DefaultTableView().SearchColumn("ОКЕИ", x => x.OKEI).SearchColumn("Название", x => x.Name).Column("Точность", x => x.Digits.ToString()).End(),
                OrmObjectMapping <Contact> .Create().Dialog <ContactDlg>()
                .DefaultTableView().SearchColumn("Фамилия", x => x.Surname).SearchColumn("Имя", x => x.Name).SearchColumn("Отчество", x => x.Patronymic).End(),
                OrmObjectMapping <Order> .Create().Dialog <OrderDlg>().PopupMenu(OrderPopupMenu.GetPopupMenu),
                OrmObjectMapping <UndeliveredOrder> .Create().Dialog <UndeliveredOrderDlg>(),
                OrmObjectMapping <Organization> .Create().Dialog <OrganizationDlg>().DefaultTableView().Column("Код", x => x.Id.ToString()).SearchColumn("Название", x => x.Name).End(),
                OrmObjectMapping <DeliverySchedule> .Create().Dialog <DeliveryScheduleDlg>().DefaultTableView().SearchColumn("Название", x => x.Name).SearchColumn("Время доставки", x => x.DeliveryTime).End(),
                OrmObjectMapping <ProductSpecification> .Create().Dialog <ProductSpecificationDlg>().DefaultTableView().SearchColumn("Код", x => x.Id.ToString()).SearchColumn("Название", x => x.Name).End(),
                OrmObjectMapping <EquipmentType> .Create().Dialog <EquipmentTypeDlg>().DefaultTableView().Column("Название", equipmentType => equipmentType.Name).End(),
                //Связанное с клиентом
                OrmObjectMapping <Proxy> .Create().Dialog <ProxyDlg>()
                .DefaultTableView().SearchColumn("Номер", x => x.Number).SearchColumn("С", x => x.StartDate.ToShortDateString()).SearchColumn("По", x => x.ExpirationDate.ToShortDateString()).End(),
                OrmObjectMapping <DeliveryPoint> .Create().Dialog <DeliveryPointDlg>().DefaultTableView().SearchColumn("ID", x => x.Id.ToString()).Column("Адрес", x => x.Title).End(),
                OrmObjectMapping <PaidRentPackage> .Create().Dialog <PaidRentPackageDlg>()
                .DefaultTableView().SearchColumn("Название", x => x.Name).Column("Тип оборудования", x => x.EquipmentType.Name).SearchColumn("Цена в сутки", x => CurrencyWorks.GetShortCurrencyString(x.PriceDaily)).SearchColumn("Цена в месяц", x => CurrencyWorks.GetShortCurrencyString(x.PriceMonthly)).End(),
                OrmObjectMapping <FreeRentPackage> .Create().Dialog <FreeRentPackageDlg>().DefaultTableView().SearchColumn("Название", x => x.Name).Column("Тип оборудования", x => x.EquipmentType.Name).OrderAsc(x => x.Name).End(),
                OrmObjectMapping <Counterparty> .Create().Dialog <CounterpartyDlg>().DefaultTableView().SearchColumn("Название", x => x.FullName).End(),
                OrmObjectMapping <Tag> .Create().Dialog <TagDlg>().DefaultTableView().SearchColumn("Название", x => x.Name).End(),
                OrmObjectMapping <CounterpartyContract> .Create().Dialog <CounterpartyContractDlg>(),
                OrmObjectMapping <DocTemplate> .Create().Dialog <DocTemplateDlg>().DefaultTableView().SearchColumn("Название", x => x.Name).Column("Тип", x => x.TemplateType.GetEnumTitle()).End(),
                OrmObjectMapping <TransferOperationDocument> .Create().Dialog <TransferOperationDocumentDlg>(),
                //Справочники с фильтрами
                OrmObjectMapping <Equipment> .Create().Dialog <EquipmentDlg>().JournalFilter <EquipmentFilter>()
                .DefaultTableView().Column("Код", x => x.Id.ToString()).SearchColumn("Номенклатура", x => x.NomenclatureName).Column("Тип", x => x.Nomenclature.Type.Name).SearchColumn("Серийный номер", x => x.Serial).Column("Дата последней обработки", x => x.LastServiceDate.ToShortDateString()).End(),
                //Логисткика
                OrmObjectMapping <RouteList> .Create().Dialog <RouteListCreateDlg>()
                .DefaultTableView().SearchColumn("Номер", x => x.Id.ToString()).Column("Дата", x => x.Date.ToShortDateString()).Column("Статус", x => x.Status.GetEnumTitle()).SearchColumn("Водитель", x => String.Format("{0} - {1}", x.Driver.FullName, x.Car.Title)).End(),
                OrmObjectMapping <RouteColumn> .Create().DefaultTableView().Column("Код", x => x.Id.ToString()).SearchColumn("Название", x => x.Name).End(),
                OrmObjectMapping <DeliveryShift> .Create().Dialog <DeliveryShiftDlg>().DefaultTableView().SearchColumn("Название", x => x.Name).SearchColumn("Диапазон времени", x => x.DeliveryTime).End(),
                OrmObjectMapping <DeliveryDaySchedule> .Create().Dialog <DeliveryDayScheduleDlg>().DefaultTableView().SearchColumn("Название", x => x.Name).End(),
                //Сервис
                OrmObjectMapping <ServiceClaim> .Create().Dialog <ServiceClaimDlg>().DefaultTableView().Column("Номер", x => x.Id.ToString()).Column("Тип", x => x.ServiceClaimType.GetEnumTitle()).Column("Оборудование", x => x.Equipment.Title).Column("Подмена", x => x.ReplacementEquipment != null ? "Да" : "Нет").Column("Точка доставки", x => x.DeliveryPoint.Title).End(),
                //Касса
                OrmObjectMapping <Income> .Create().Dialog <CashIncomeDlg> (),
                OrmObjectMapping <ExpenseCategory> .Create().Dialog <ExpenseCategoryViewModel>().DefaultTableView().Column("Код", x => x.Id.ToString()).SearchColumn("Название", e => e.Name).Column("Тип документа", e => e.ExpenseDocumentType.GetEnumTitle()).TreeConfig(new RecursiveTreeConfig <ExpenseCategory>(x => x.Parent, x => x.Childs)).End(),
                OrmObjectMapping <Expense> .Create().Dialog <CashExpenseDlg> (),
                OrmObjectMapping <AdvanceReport> .Create().Dialog <AdvanceReportDlg> (),
                OrmObjectMapping <Fine> .Create().Dialog <FineDlg> (),
                OrmObjectMapping <Premium> .Create().Dialog <PremiumDlg> (),
                OrmObjectMapping <IncomeCashTransferDocument> .Create().Dialog <IncomeCashTransferDlg>(),
                OrmObjectMapping <CommonCashTransferDocument> .Create().Dialog <CommonCashTransferDlg>(),
                //Банкинг
                OrmObjectMapping <AccountIncome> .Create(),
                OrmObjectMapping <AccountExpense> .Create(),
                //Склад
                OrmObjectMapping <Warehouse> .Create().Dialog <WarehouseDlg>().DefaultTableView().Column("Название", w => w.Name).Column("В архиве", w => w.IsArchive ? "Да":"").End(),
                OrmObjectMapping <RegradingOfGoodsTemplate> .Create().Dialog <RegradingOfGoodsTemplateDlg>().DefaultTableView().Column("Название", w => w.Name).End()
            };

            #region Складские документы
            OrmMain.AddObjectDescription <IncomingWater>().Dialog <IncomingWaterDlg>();
            OrmMain.AddObjectDescription <WriteoffDocument>().Dialog <WriteoffDocumentDlg>();
            OrmMain.AddObjectDescription <InventoryDocument>().Dialog <InventoryDocumentDlg>();
            OrmMain.AddObjectDescription <ShiftChangeWarehouseDocument>().Dialog <ShiftChangeWarehouseDocumentDlg>();
            OrmMain.AddObjectDescription <RegradingOfGoodsDocument>().Dialog <RegradingOfGoodsDocumentDlg>();
            OrmMain.AddObjectDescription <SelfDeliveryDocument>().Dialog <SelfDeliveryDocumentDlg>();
            OrmMain.AddObjectDescription <CarLoadDocument>().Dialog <CarLoadDocumentDlg>();
            OrmMain.AddObjectDescription <CarUnloadDocument>().Dialog <CarUnloadDocumentDlg>();
            #endregion

            #region Goods
            OrmMain.AddObjectDescription <Nomenclature>().Dialog <NomenclatureDlg>().JournalFilter <NomenclatureFilter>().
            DefaultTableView()
            .SearchColumn("Код", x => x.Id.ToString())
            .SearchColumn("Название", x => x.Name)
            .Column("Тип", x => x.CategoryString)
            .SearchColumn("Номер в ИМ", x => x.OnlineStoreExternalId)
            .End();
            OrmMain.AddObjectDescription <Folder1c>().Dialog <Folder1cDlg>()
            .DefaultTableView()
            .SearchColumn("Код 1С", x => x.Code1c)
            .SearchColumn("Название", x => x.Name)
            .TreeConfig(new RecursiveTreeConfig <Folder1c>(x => x.Parent, x => x.Childs)).End();
            #endregion

            #region Простые справочники
            OrmMain.AddObjectDescription <DiscountReason>()
            .DefaultTableView()
            .SearchColumn("Название", x => x.Name)
            .End();
            OrmMain.AddObjectDescription <GeographicGroup>()
            .Dialog <GeographicGroupDlg>()
            .DefaultTableView()
            .SearchColumn("Название", x => x.Name)
            .Column("Код", x => x.Id.ToString())
            .End();
            OrmMain.AddObjectDescription <TariffZone>()
            .DefaultTableView()
            .SearchColumn("Номер", x => x.Id.ToString())
            .SearchColumn("Название", x => x.Name)
            .End();
            OrmMain.AddObjectDescription <NonReturnReason>()
            .DefaultTableView()
            .SearchColumn("Код", x => x.Id.ToString())
            .SearchColumn("Название", x => x.Name)
            .End();
            OrmMain.AddObjectDescription <PaymentFrom>()
            .DefaultTableView()
            .SearchColumn("Код", x => x.Id.ToString())
            .SearchColumn("Название", x => x.Name)
            .End();
            OrmMain.AddObjectDescription <Post>()
            .DefaultTableView()
            .SearchColumn("Код", x => x.Id.ToString())
            .SearchColumn("Название", x => x.Name)
            .End();

            #endregion

            #region неПростые справочники
            OrmMain.AddObjectDescription <Subdivision>().Dialog <SubdivisionDlg>().DefaultTableView().SearchColumn("Название", x => x.Name).Column("Руководитель", x => x.Chief == null ? "" : x.Chief.ShortName).SearchColumn("Номер", x => x.Id.ToString()).TreeConfig(new RecursiveTreeConfig <Subdivision>(x => x.ParentSubdivision, x => x.ChildSubdivisions)).End();
            OrmMain.AddObjectDescription <TypeOfEntity>()
            .Dialog <TypeOfEntityDlg>()
            .DefaultTableView()
            .SearchColumn("Тип документа", x => TypeOfEntityRepository.GetEntityNameByString(x.Type))
            .SearchColumn("Название документа", x => x.CustomName)
            .SearchColumn("Код", x => x.Id.ToString())
            .Column("Активно", x => !x.IsActive ? "нет" : String.Empty)
            .SearchColumn("Имя класса", x => x.Type)
            .OrderAsc(x => x.CustomName)
            .End();
            OrmMain.AddObjectDescription <Employee>().Dialog <EmployeeDlg>().DefaultTableView()
            .Column("Код", x => x.Id.ToString())
            .SearchColumn("Ф.И.О.", x => x.FullName)
            .Column("Категория", x => x.Category.GetEnumTitle())
            .OrderAsc(x => x.LastName).OrderAsc(x => x.Name).OrderAsc(x => x.Patronymic)
            .End();
            OrmMain.AddObjectDescription <Trainee>().Dialog <TraineeDlg>().DefaultTableView()
            .Column("Код", x => x.Id.ToString())
            .SearchColumn("Ф.И.О.", x => x.FullName)
            .OrderAsc(x => x.LastName).OrderAsc(x => x.Name).OrderAsc(x => x.Patronymic)
            .End();
            OrmMain.AddObjectDescription <DeliveryPriceRule>().Dialog <DeliveryPriceRuleDlg>().DefaultTableView()
            .Column("< 19л б.", x => x.Water19LCount.ToString())
            .Column("< 6л б.", x => x.Water6LCount)
            .Column("< 1,5л б.", x => x.Water1500mlCount)
            .Column("< 0,6л б.", x => x.Water600mlCount)
            .Column("Минимальная сумма заказа", x => x.OrderMinSumEShopGoods.ToString())
            .SearchColumn("Описание правила", x => x.Title)
            .End();
            OrmMain.AddObjectDescription <Car>().Dialog <CarsDlg>().DefaultTableView()
            .SearchColumn("Код", x => x.Id.ToString())
            .SearchColumn("Модель а/м", x => x.Model)
            .SearchColumn("Гос. номер", x => x.RegistrationNumber)
            .SearchColumn("Водитель", x => x.Driver != null ? x.Driver.FullName : string.Empty)
            .End();
            OrmMain.AddObjectDescription <Certificate>().Dialog <CertificateDlg>().DefaultTableView()
            .SearchColumn("Имя", x => x.Name)
            .Column("Тип", x => x.TypeOfCertificate.GetEnumTitle())
            .SearchColumn("Номер", x => x.Id.ToString())
            .SearchColumn("Начало срока", x => x.StartDate.HasValue ? x.StartDate.Value.ToString("dd.MM.yyyy") : "Ошибка!")
            .SearchColumn("Окончание срока", x => x.ExpirationDate.HasValue ? x.ExpirationDate.Value.ToString("dd.MM.yyyy") : "Бессрочно")
            .Column("Архивный?", x => x.IsArchive ? "Да" : string.Empty)
            .OrderAsc(x => x.IsArchive)
            .OrderAsc(x => x.Id)
            .End();
            OrmMain.AddObjectDescription <StoredImageResource>().Dialog <ImageLoaderDlg>().DefaultTableView()
            .SearchColumn("Номер", x => x.Id.ToString())
            .SearchColumn("Название", x => x.Name)
            .End();
            OrmMain.AddObjectDescription <DeliveryPointCategory>().Dialog <DeliveryPointCategoryDlg>().DefaultTableView()
            .SearchColumn("Код", x => x.Id.ToString())
            .SearchColumn("Название", x => x.Name)
            .Column("В архиве?", x => x.IsArchive ? "Да" : "Нет")
            .OrderAsc(x => x.Name)
            .End();
            OrmMain.AddObjectDescription <CounterpartyActivityKind>().Dialog <CounterpartyActivityKindDlg>().DefaultTableView()
            .SearchColumn("Код", x => x.Id.ToString())
            .SearchColumn("Название", x => x.Name)
            .End();

            #endregion

            OrmMain.ClassMappingList.AddRange(QSBanks.QSBanksMain.GetModuleMaping());

            #endregion

            HistoryMain.Enable();
            TemplatePrinter.InitPrinter();
            ImagePrinter.InitPrinter();

            //Настройка ParentReference
            ParentReferenceConfig.AddActions(new ParentReferenceActions <Organization, Account> {
                AddNewChild = (o, a) => o.AddAccount(a)
            });
            ParentReferenceConfig.AddActions(new ParentReferenceActions <Counterparty, Account> {
                AddNewChild = (c, a) => c.AddAccount(a)
            });
            ParentReferenceConfig.AddActions(new ParentReferenceActions <Employee, Account> {
                AddNewChild = (c, a) => c.AddAccount(a)
            });
            ParentReferenceConfig.AddActions(new ParentReferenceActions <Trainee, Account> {
                AddNewChild = (c, a) => c.AddAccount(a)
            });
        }
Ejemplo n.º 9
0
    public MainWindow() : base(Gtk.WindowType.Toplevel)
    {
        Build();
        //Передаем лебл
        QSMain.StatusBarLabel = labelStatus;
        ProgressBar           = progresswidget1;
        this.Title            = AutofacScope.Resolve <IApplicationInfo>().ProductTitle;
        QSMain.MakeNewStatusTargetForNlog();

        QSMain.CheckServer(this);         // Проверяем настройки сервера

        NavigationManager      = AutofacScope.Resolve <TdiNavigationManager>(new TypedParameter(typeof(TdiNotebook), tdiMain));
        tdiMain.WidgetResolver = AutofacScope.Resolve <ITDIWidgetResolver>(new TypedParameter(typeof(Assembly[]), new[] { Assembly.GetAssembly(typeof(OrganizationViewModel)) }));

        var checker = new VersionCheckerService(MainClass.AppDIContainer);

        checker.RunUpdate();

        var userService  = AutofacScope.Resolve <IUserService>();
        var user         = userService.GetCurrentUser(UoW);
        var databaseInfo = AutofacScope.Resolve <IDataBaseInfo>();

        //Пока такая реализация чтобы не плодить сущностей.
        var connectionBuilder = AutofacScope.Resolve <MySqlConnectionStringBuilder>();

        if (connectionBuilder.UserID == "root")
        {
            string        Message = "Вы зашли в программу под администратором базы данных. У вас есть только возможность создавать других пользователей.";
            MessageDialog md      = new MessageDialog(this, DialogFlags.DestroyWithParent,
                                                      MessageType.Info,
                                                      ButtonsType.Ok,
                                                      Message);
            md.Run();
            md.Destroy();
            Users WinUser = new Users();
            WinUser.Show();
            WinUser.Run();
            WinUser.Destroy();
            return;
        }

        if (databaseInfo.IsDemo)
        {
            string Message = "Вы подключились к демонстрационному серверу. НЕ используете его для работы! " +
                             "Введенные данные будут доступны другим пользователям.\n\nДля работы вам необходимо " +
                             "установить собственный сервер или купить подписку на QS:Облако.";
            MessageDialog md = new MessageDialog(this, DialogFlags.DestroyWithParent,
                                                 MessageType.Info,
                                                 ButtonsType.Ok,
                                                 Message);
            md.Run();
            md.Destroy();
            dialogAuthenticationAction.Sensitive = false;
            ActionSN.Sensitive = false;
        }

        bool isWindows = RuntimeInformation.IsOSPlatform(OSPlatform.Windows);

        if (isWindows)
        {
            this.KeyReleaseEvent += ClipboardWorkaround.HandleKeyReleaseEvent;
        }
        TDIMain.MainNotebook  = tdiMain;
        this.KeyReleaseEvent += TDIMain.TDIHandleKeyReleaseEvent;

        UsersAction.Sensitive = user.IsAdmin;
        labelUser.LabelProp   = user.Name;

        //Настраиваем новости
        var feeds = new List <NewsFeed>()
        {
            new NewsFeed("workwearsite", "Новости программы", "http://workwear.qsolution.ru/?feed=atom")
        };
        var reader = AutofacScope.Resolve <FeedReader>(new TypedParameter(typeof(List <NewsFeed>), feeds));

        reader.LoadReadFeed();
        var newsmenuModel = new QS.NewsFeed.ViewModels.NewsMenuViewModel(reader);
        var newsmenu      = new NewsMenuView(newsmenuModel);

        menubar1.Add(newsmenu);
        newsmenuModel.LoadFeed();

        ReadUserSettings();

        var EntityAutocompleteSelector = new JournalViewModelAutocompleteSelector <EmployeeCard, EmployeeJournalViewModel>(UoW, AutofacScope);

        entitySearchEmployee.ViewModel = new EntitySearchViewModel <EmployeeCard>(EntityAutocompleteSelector);
        entitySearchEmployee.ViewModel.EntitySelected += SearchEmployee_EntitySelected;

        NavigationManager                  = AutofacScope.Resolve <TdiNavigationManager>(new TypedParameter(typeof(TdiNotebook), tdiMain));
        tdiMain.WidgetResolver             = AutofacScope.Resolve <ITDIWidgetResolver>(new TypedParameter(typeof(Assembly[]), new[] { Assembly.GetAssembly(typeof(OrganizationViewModel)) }));
        NavigationManager.ViewModelOpened += NavigationManager_ViewModelOpened;

        #region Проверки и исправления базы
        //Если склады отсутствуют создаём новый, так как для версий ниже предприятия пользователь его создать не сможет.
        if (UoW.GetAll <Warehouse>().Count() == 0)
        {
            CreateDefaultWarehouse();
        }
        //Если у базы еще нет Guid создаем его.
        using (var localScope = MainClass.AppDIContainer.BeginLifetimeScope()) {
            var baseParam = localScope.Resolve <BaseParameters>();
            if (baseParam.Dynamic.BaseGuid == null)
            {
                baseParam.Dynamic.BaseGuid = Guid.NewGuid();
            }
        }
        #endregion

        FeaturesService = AutofacScope.Resolve <FeaturesService>();
        DisableFeatures();

        HistoryMain.Enable();
    }