コード例 #1
0
        private (bool isValidParentAccount, string validMessage) CheckParentAccount(
            IOrganizationService organizationService
            , Account parentAccount
            , Account childAccount
            , MessageNameEnum messageName
            , ITracingService tracingService)
        {
            tracingService.Trace("Inn1 {0}", parentAccount.Inn);
            tracingService.Trace("Inn2 {0}", childAccount.Inn);

            var checkResult = (isValidParentAccount : true, validMessage : string.Empty);

            //if (parentAccount.Inn == childAccount.Inn && parentAccount.CreatedOn > childAccount.CreatedOn)
            //{
            //    checkResult.isValidParentAccount = false;
            //    checkResult.validMessage = "Родительская организация создана позже филиала";
            //}
            //else
            if (!IsValidParentAccountKpp(organizationService, parentAccount))
            {
                checkResult.isValidParentAccount = false;
                checkResult.validMessage         = "КПП не принадлежит головной организации";
            }
            //CR-1729
            if (checkResult.isValidParentAccount && messageName == MessageNameEnum.Update && (parentAccount.Inn != childAccount.Inn))
            {
                checkResult.isValidParentAccount = false;
                checkResult.validMessage         = "ИНН головной и дочерней организации не совпадают";
            }
            if (checkResult.isValidParentAccount && messageName == MessageNameEnum.Update && parentAccount.StateCode == AccountStateCodeEnum.Inactive)
            {
                checkResult.isValidParentAccount = false;
                checkResult.validMessage         = "Головная организации неактивна";//CR-1729
            }
            if (messageName == MessageNameEnum.Create && (parentAccount.Inn != childAccount.Inn))
            {
                checkResult.isValidParentAccount = false;
                checkResult.validMessage         = "ИНН дочерней и головной организации не совпадают";//CR-1729
            }
            //CR-1906
            if (parentAccount.AccountType == AccountTypeEnum.IP)
            {
                checkResult.isValidParentAccount = false;
                checkResult.validMessage         = "Создание филиала к этой организации (ИП) невозможно";//CR-1906
            }
            //CR-1905
            if (parentAccount.ParentAccount != null)
            {
                checkResult.isValidParentAccount = false;
                checkResult.validMessage         = "Создание филиала к этой организации невозможно";//CR-1905
            }

            //if (parentAccount.AccountType != childAccount.AccountType)
            //{
            //    checkResult.isValidParentAccount = false;
            //    checkResult.validMessage = "Создание филиала к этой организации невозможно - не совпадает типы";
            //}

            return(checkResult);
        }
 /// <summary>
 ///
 /// </summary>
 /// <param name="message">Message Name</param>
 /// <param name="entityLogicalName"></param>
 /// <param name="stage"></param>
 /// <param name="executionMode"></param>
 /// <param name="filteringAttributes">Comma separated list of attributes that will trigger this step. Leave null for all attributes.</param>
 /// <param name="stepName"></param>
 /// <param name="executionOrder"></param>
 /// <param name="isolationModel"></param>
 public CrmPluginRegistrationAttribute(
     MessageNameEnum message,
     string entityLogicalName,
     StageEnum stage,
     ExecutionModeEnum executionMode,
     string filteringAttributes,
     string stepName,
     int executionOrder,
     IsolationModeEnum isolationModel
     ) : this(message.ToString(), entityLogicalName, stage, executionMode, filteringAttributes, stepName, executionOrder, isolationModel)
 {
 }