public override void AfterConstruction()
        {
            base.AfterConstruction();
            this.ComponentType = typeof(fmPaymentRequestMemorandum);
            this.CID           = Guid.NewGuid();

            csCSecurityUser user = SecuritySystem.CurrentUser as csCSecurityUser;

            user = this.Session.GetObjectByKey <csCSecurityUser>(user.Oid);
            if (user != null)
            {
                this.Creator = user;
                //this.FBKManager = user.Staff;
                this.Requester             = user.Staff;
                this.Curator               = user.Department;
                this.SecondSignaturePerson = user.Staff;

                IList <csCSecurityRole> roles = GetActualRoles(user);
                //csCSecurityRole mainBuhRole = fmCSettingsFinance.GetInstance(Session).MainBuhRole;
                if (roles.Count == 1)
                {
                    this.OwnerRole = roles[0];
                }
            }

            // Подразделение-адресат
            this.FBKDepartment = fmCSettingsFinance.GetInstance(Session).FBKDepartment;

            // Номер и дата документа по умолчанию
            this.ExtDocNumber = "-";
            this.ExtDocDate   = DateTime.Now; //.Date;

            this.PaymentTaxPeriodPart4 = Convert.ToInt16(DateTime.Now.Year);
        }
예제 #2
0
 /// <summary>
 /// Обновим права администратора, для политики Windows Autentication пользователь с административными
 /// правами создается автоматически, а вот список прав не обновляется
 /// Паша!!! Реализация не учитывает вариантов в системе безопасности и использует стандартный класс роли
 /// или его производные
 /// </summary>
 private void UpdateAdminRole()
 {
     using (IObjectSpace os = ObjectSpace.CreateNestedObjectSpace()) {
         csCSecurityRole administratorRole = os.FindObject <csCSecurityRole>(
             new BinaryOperator("Name", SecurityStrategy.AdministratorRoleName), true);
         if (administratorRole == null)
         {
             administratorRole      = os.CreateObject <csCSecurityRole>();
             administratorRole.Name = SecurityStrategy.AdministratorRoleName;
             ModelOperationPermissionData modelPermission =
                 os.CreateObject <ModelOperationPermissionData>();
             administratorRole.PersistentPermissions.Add(modelPermission);
         }
         administratorRole.BeginUpdate();
         administratorRole.Permissions.GrantRecursive(typeof(object), SecurityOperations.Read);
         administratorRole.Permissions.GrantRecursive(typeof(object), SecurityOperations.Write);
         administratorRole.Permissions.GrantRecursive(typeof(object), SecurityOperations.Create);
         administratorRole.Permissions.GrantRecursive(typeof(object), SecurityOperations.Delete);
         administratorRole.Permissions.GrantRecursive(typeof(object), SecurityOperations.Navigate);
         administratorRole.EndUpdate();
         if (administratorRole.Users.Count == 0)
         {
             // Паша !!! Неустойчивый вариант, нужен код определяющий тип User по конфигу Application
             csCSecurityUser user = os.FindObject <csCSecurityUser>(
                 new BinaryOperator("UserName", ConfigurationManager.AppSettings["DefaultAdminName"]));
             if (user != null)
             {
                 user.Roles.Add(administratorRole);
             }
         }
         os.CommitChanges();
     }
 }
예제 #3
0
        public override void AfterConstruction()
        {
            base.AfterConstruction();
            this.ComponentType = typeof(fmCPRPaymentRequest);
            this.CID           = Guid.NewGuid();

            Date         = DateTime.Now;
            DateRegister = Date;
            State        = PaymentRequestStates.REGISTERED;

            this.Valuta        = Session.FindObject <csValuta>(ValRub);
            this.PaymentValuta = this.Valuta;

            if (crmUserParty.CurrentUserParty != null)
            {
                if (crmUserParty.CurrentUserParty.Value != null)
                {
                    this.PartyPaySender = crmUserParty.CurrentUserPartyGet(this.Session).Party;
                }
            }

            csCSecurityUser user = SecuritySystem.CurrentUser as csCSecurityUser;

            user = this.Session.GetObjectByKey <csCSecurityUser>(user.Oid);
            if (user != null)
            {
                this.FBKManager = user.Staff;
            }
        }
        public IList <csCSecurityRole> GetActualRoles()
        {
            csCSecurityUser user = SecuritySystem.CurrentUser as csCSecurityUser;

            user = this.Session.GetObjectByKey <csCSecurityUser>(user.Oid);
            return(GetActualRoles(user));
        }
예제 #5
0
        public static void AfterConstruction(fmIDocCache instance, IObjectSpace os)
        {
            // The "AfterConstruction" method is executed only once, after an object is created.
            // Use this method to initialize new objects with default property values.
            instance.DocDate = DateTime.Now;
            if (crmUserParty.CurrentUserParty != null)
            {
                if (crmUserParty.CurrentUserParty.Value != null)
                {
                    instance.DocParty = crmUserParty.CurrentUserPartyGet(os).Party;
                }
            }
            csCSecurityUser user = SecuritySystem.CurrentUser as csCSecurityUser;

            user = os.GetObject <csCSecurityUser>(user);
            if (user != null && user.Staff != null)
            {
                instance.DocPartyDepartment = user.Staff.Department;
            }

            instance.AccountDebit = os.FindObject <fmCFAAccount>(
                CriteriaOperator.And(
                    new BinaryOperator("AccountSystem.Code", "1000"),
                    new BinaryOperator("BuhCode", "5011")
                    ));
            instance.AccountCredit = os.FindObject <fmCFAAccount>(
                CriteriaOperator.And(
                    new BinaryOperator("AccountSystem.Code", "1000"),
                    new BinaryOperator("BuhCode", "6242")
                    ));
            instance.AVTMode = "1";
        }
        public override void AfterConstruction()
        {
            base.AfterConstruction();
            this.ComponentType = typeof(fmCPRPaymentRequestFinOrder);
            this.CID           = Guid.NewGuid();

            //this.State = PaymentRequestStates.PAYED;

            fmCPRPaymentRequestObligation finObligation = new fmCPRPaymentRequestObligation(Session);

            this.PaySettlmentOfObligations.Add(finObligation);

            csCSecurityUser user  = SecuritySystem.CurrentUser as csCSecurityUser;
            csCSecurityUser user1 = SessionHelper.GetObjectInSession <csCSecurityUser>(user, Session);

            if (user1 != null && user1.Staff != null)
            {
                this.FBKManager        = user1.Staff; //.Department;
                this.DepartmentOfState = user1.Staff.Department;
            }
        }
        static public IList <csCSecurityRole> GetActualRoles(Session session, csCSecurityUser user)
        {
            if (user.Session != session)
            {
                throw new ArgumentException("Not valid Session for user object");
            }
            IList <csCSecurityRole> roles       = new List <csCSecurityRole>(user.Roles.Count);
            csCSecurityRole         mainBuhRole = fmCSettingsFinance.GetInstance(session).MainBuhRole;

            if (mainBuhRole != null)
            {
                IList <csCSecurityRole> valid_roles = mainBuhRole.ChildRoles;
                foreach (csCSecurityRole role in user.Roles)
                {
                    if (valid_roles.Contains(role))
                    {
                        roles.Add(role);
                    }
                }
            }
            return(roles);
        }
        public override void UpdateDatabaseAfterUpdateSchema()
        {
            base.UpdateDatabaseAfterUpdateSchema();

            if (this.CurrentDBVersion.ToString() != "1.1.1.188")   // Поправить на правильный номер!
            {
                return;
            }

            IObjectSpace os  = ObjectSpace;
            Session      ssn = ((ObjectSpace)os).Session;

            // Назначение Creator для служебных записок
            XPQuery <fmPaymentRequestMemorandum> paymentRequestMemorandums = new XPQuery <fmPaymentRequestMemorandum>(ssn);
            var queryPRM = (from prm in paymentRequestMemorandums
                            where prm.Creator == null
                            select prm).ToList <fmPaymentRequestMemorandum>();

            foreach (var prm in queryPRM)
            {
                XPQuery <AuditDataItemPersistent> auditData = new XPQuery <AuditDataItemPersistent>(ssn);
                var queryAuditData = (from audit in auditData
                                      where audit.OperationType == "ObjectCreated" &&
                                      audit.AuditedObject.GuidId == prm.Oid
                                      select audit).ToList <AuditDataItemPersistent>();
                if (queryAuditData.Count() > 0)
                {
                    XPQuery <csCSecurityUser> users = new XPQuery <csCSecurityUser>(ssn);
                    csCSecurityUser           user  = (from usr in users
                                                       where usr.UserName == queryAuditData[0].UserName
                                                       select usr).FirstOrDefault();
                    prm.Creator = user;
                }
            }
            os.CommitChanges();
        }
 static public IList <csCSecurityRole> GetActualRoles(IObjectSpace os, csCSecurityUser user)
 {
     return(fmPaymentRequestMemorandum.GetActualRoles(((ObjectSpace)os).Session, os.GetObject <csCSecurityUser>(user)));
 }
예제 #10
0
        protected override void OnActivated()
        {
            base.OnActivated();

            novc = Frame.GetController <NewObjectViewController>();
            if (novc != null)
            {
                bool exists = false;
                for (int i = 0; i < novc.NewObjectAction.Items.Count; i++)
                {
                    if (novc.NewObjectAction.Items[i].Id == idCustom)
                    {
                        exists = true;
                        break;
                    }
                }
                if (!exists && novc.NewObjectAction.Items.Count > 0)
                {
                    // Смена заголовка на кнопке создания пустой служебной записки
                    novc.NewObjectAction.Items[0].Caption = captionStandart;

                    // Создать по образцу
                    ChoiceActionItem NewByTemplate = new ChoiceActionItem(idCustom, captionCustom, novc.NewObjectAction.Items[0].Data);
                    NewByTemplate.ImageName = novc.NewObjectAction.Items[0].ImageName;
                    novc.NewObjectAction.Items.Add(NewByTemplate);

                    /*
                     * // Сохранить как шаблон
                     * ChoiceActionItem SaveTemplate = new ChoiceActionItem(idSaveAsTemplate, captionCustomAsTemplate, novc.NewObjectAction.Items[0].Data);
                     * SaveTemplate.ImageName = novc.NewObjectAction.Items[0].ImageName;
                     * novc.NewObjectAction.Items.Add(SaveTemplate);
                     */
                }
                novc.NewObjectAction.Execute += new SingleChoiceActionExecuteEventHandler(CustomNewActionController_Execute);

                // Настройка способа реакции на кнопке
                novc.NewObjectAction.ShowItemsOnClick = !(novc.NewObjectAction.Items.Count < 2);
            }

            View.CurrentObjectChanged += new EventHandler(View_CurrentObjectChanged);

            View.ObjectSpace.ObjectChanged += new EventHandler <ObjectChangedEventArgs>(ObjectSpace_ObjectChanged);
            View.ObjectSpace.ObjectSaved   += new EventHandler <ObjectManipulatingEventArgs>(ObjectSpace_ObjectSaved);

            EnableButton();

            psbc = Frame.GetController <PrintSelectionBaseController>();
            if (psbc != null)
            {
                psbc.ShowInReportAction.SelectionDependencyType = SelectionDependencyType.RequireSingleObject;
            }

            // Настройка фильтров
            csCSecurityUser user = SecuritySystem.CurrentUser as csCSecurityUser;

            //csCSecurityUser user = ObjectSpace.FindObject<csCSecurityUser>(new BinaryOperator("UserName", "PERSONAL\\12222"));

            user = ObjectSpace.GetObjectByKey <csCSecurityUser>(user.Oid);
            if ((View is ListView) & (View.ObjectTypeInfo.Type == typeof(fmPaymentRequestMemorandum)))
            {
                csCSecurityRole  administratorRole = ObjectSpace.FindObject <csCSecurityRole>(new BinaryOperator("Name", SecurityStrategy.AdministratorRoleName), true);
                CriteriaOperator criteriaOr        = null;
                if (user != null && administratorRole != null)
                {
                    bool isAdmin = false;
                    foreach (var role in user.Roles)
                    {
                        if (role.Name == SecurityStrategy.AdministratorRoleName)
                        {
                            isAdmin = true;
                            break;
                        }
                    }
                    if (!isAdmin)
                    {
//                    if (true) {

/*
 *                      // Список пользователей, ассоциированных с группами текущего пользователя
 *                      List<csCSecurityUser> userList = new List<csCSecurityUser>();
 *                      foreach (csCSecurityRole role in GetMainBuhRole(ObjectSpace).ChildRoles) {
 *                          if (user.Roles.IndexOf(role) != -1) {
 *                              foreach (SecurityUserWithRolesBase userOfGroupBase in role.Users) {
 *                                  csCSecurityUser userOfGroup = userOfGroupBase as csCSecurityUser;
 *                                  if (userOfGroup != null && !userList.Contains(userOfGroup)) {
 *                                      userList.Add(userOfGroup);
 *                                  }
 *                              }
 *                          }
 *                      }
 *
 *                      // Список всех доступных служебных записок reqMemoListTotal
 *                      List<fmPaymentRequestMemorandum> reqMemoListTotal = new List<fmPaymentRequestMemorandum>();
 *                      foreach (csCSecurityUser person in userList) {
 *                          XPQuery<fmPaymentRequestMemorandum> RMs = new XPQuery<fmPaymentRequestMemorandum>(((ObjectSpace)ObjectSpace).Session);
 *                          List<fmPaymentRequestMemorandum> queryRM = (from rm in RMs
 *                                                                      where rm.Creator == person
 *                                                                         //&& user.Roles.IndexOf(rm.OwnerRole) != 0
 *                                                                      select rm).ToList();
 *                          foreach (fmPaymentRequestMemorandum rm in queryRM) {
 *                              if (user.Roles.IndexOf(rm.OwnerRole) != -1) {
 *                                  reqMemoListTotal.Add(rm);
 *                              }
 *                          }
 *                          //reqMemoListTotal.AddRange(queryRM);
 *                      }
 *
 *                      Guid[] reqMemoIdListTotal = (from r in reqMemoListTotal
 *                                                   select r.Oid).ToArray();
 */
                        //CriteriaOperator UserHasAdminRole = CriteriaOperator.Parse("Creator.Roles[Name = 'Administrator'].Count() > 0");
                        //CriteriaOperator isTemplate = CriteriaOperator.Parse("State == 'TEMPLATE'");
                        criteriaOr = CriteriaOperator.Or
                                     (
                            new BinaryOperator(new OperandProperty("FBKReceiver"), new ConstantValue(user.Staff), BinaryOperatorType.Equal)
                            , new BinaryOperator(new OperandProperty("Creator"), new ConstantValue(user), BinaryOperatorType.Equal)
                            , new BinaryOperator(new OperandProperty("Requester"), new ConstantValue(user.Staff), BinaryOperatorType.Equal)
                            , new BinaryOperator(new OperandProperty("FirstSignaturePerson"), new ConstantValue(user.Staff), BinaryOperatorType.Equal)
                            , new BinaryOperator(new OperandProperty("SecondSignaturePerson"), new ConstantValue(user.Staff), BinaryOperatorType.Equal)
                            //,isTemplate
                            , new InOperator("OwnerRole", fmCPRPaymentRequestBusinesLogic.GetActualRoles(ObjectSpace, user).ToArray())
                                     );
                    }
                }
                ((ListView)View).CollectionSource.Criteria["MemorandumFilter"] = criteriaOr;
            }
        }
 public IList <csCSecurityRole> GetActualRoles(csCSecurityUser user)
 {
     return(GetActualRoles(this.Session, user));
 }