예제 #1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="storage"></param>
        /// <param name="accountOrganization"></param>
        /// <param name="user"></param>
        /// <param name="checkLogic">Флаг проверки бизнес-логикой возможности удаления связи места хранения и организации.
        /// При значении false будет выполнена только проверка прав.</param>
        public void CheckPossibilityToRemoveAccountOrganization(Storage storage, AccountOrganization accountOrganization, User user, bool checkLogic = true)
        {
            CheckPermissionToPerformOperation(storage, user, Permission.Storage_AccountOrganization_Remove);

            if (checkLogic)
            {
                // Проверяем наличие товаров данной организации на данном складе
                var IsAvailability = articleAvailabilityService.IsExtendedArticleAvailability(storage.Id, accountOrganization.Id, DateTime.Now);
                ValidationUtils.Assert(IsAvailability == false, string.Format("Невозможно удалить связь. На месте хранения «{0}» имеются товары, принадлежащие организации «{1}».",
                                                                              storage.Name, accountOrganization.ShortName));
            }
        }
        /// <summary>
        /// Проверка на возможность удаления связи "Собственная организация - МХ"
        /// </summary>
        /// <param name="organization"></param>
        /// <returns></returns>
        private void CheckPossibilityToDeleteAccountOrganizationToStorageLink(AccountOrganization organization, Storage storage)
        {
            // Проверяем наличие товаров данной организации на данном складе
            var isAvailability = articleAvailabilityService.IsExtendedArticleAvailability(storage.Id, organization.Id, DateTime.Now);

            ValidationUtils.Assert(isAvailability == false, string.Format("Невозможно удалить связь. На месте хранения «{0}» имеются товары, принадлежащие организации «{1}».", storage.Name, organization.ShortName));

            var receiptWaybillList = receiptWaybillRepository.GetList(organization, storage);

            GetExceptionString(receiptWaybillList, 3, "приходной накладной", "и еще в {0} приходных накладных",
                               "Невозможно удалить связанное место хранения, так как оно используется в");

            var movementWaybillList = movementWaybillRepository.GetList(organization, storage);

            GetExceptionString(movementWaybillList, 3, "накладной перемещения", "и еще в {0} накладных перемещения",
                               "Невозможно удалить связанное место хранения, так как оно используется в");

            var changeOwnerWaybillList = changeOwnerWaybillRepository.GetList(organization, storage);

            GetExceptionString(changeOwnerWaybillList, 3, "накладной смены собственника", "и еще в {0} накладных смены собственника",
                               "Невозможно удалить связанное место хранения, так как оно используется в");

            var writeoffWaybillList = writeoffWaybillRepository.GetList(organization, storage);

            GetExceptionString(writeoffWaybillList, 3, "накладной списания", "и еще в {0} накладных списания",
                               "Невозможно удалить связанное место хранения, так как оно используется в");

            var expenditureWaybillList = expenditureWaybillRepository.GetList(organization, storage);

            GetExceptionString(expenditureWaybillList, 3, "накладной реализации", "и еще в {0} накладных реализации",
                               "Невозможно удалить связанное место хранения, так как оно используется в");

            var returnFromClientWaybillList = returnFromClientWaybillRepository.GetList(organization, storage);

            GetExceptionString(returnFromClientWaybillList, 3, "накладной возврата от клиента", "и еще в {0} накладных возврата от клиента",
                               "Невозможно удалить связанное место хранения, так как оно используется в");
        }