コード例 #1
0
        public void GetCurrencyAndCurrencyRate(ProductionOrderPayment productionOrderPayment, out Currency currency, out CurrencyRate currencyRate)
        {
            switch (productionOrderPayment.Type)
            {
            case ProductionOrderPaymentType.ProductionOrderProductionPayment:
                GetCurrencyAndCurrencyRate(productionOrderPayment.ProductionOrder, out currency, out currencyRate);
                currencyRate = productionOrderPayment.CurrencyRate;

                return;

            case ProductionOrderPaymentType.ProductionOrderTransportSheetPayment:
                GetCurrencyAndCurrencyRate(productionOrderPayment.As <ProductionOrderTransportSheetPayment>().TransportSheet, out currency, out currencyRate);
                currencyRate = productionOrderPayment.CurrencyRate;

                return;

            case ProductionOrderPaymentType.ProductionOrderExtraExpensesSheetPayment:
                GetCurrencyAndCurrencyRate(productionOrderPayment.As <ProductionOrderExtraExpensesSheetPayment>().ExtraExpensesSheet, out currency, out currencyRate);
                currencyRate = productionOrderPayment.CurrencyRate;

                return;

            case ProductionOrderPaymentType.ProductionOrderCustomsDeclarationPayment:
                currency     = GetCurrentBaseCurrency();
                currencyRate = null;

                return;

            default:
                throw new Exception("Неизвестное назначение оплаты.");
            }
            ;
        }
コード例 #2
0
 private void CheckPermissionToPerformOperation(ProductionOrderPayment productionOrderPayment, User user, Permission permission)
 {
     if (!IsPermissionToPerformOperation(productionOrderPayment, user, permission))
     {
         throw new Exception(String.Format("Недостаточно прав для выполнения операции «{0}».", permission.GetDisplayName()));
     }
 }
コード例 #3
0
        private bool IsPermissionToPerformOperation(ProductionOrderPayment productionOrderPayment, User user, Permission permission)
        {
            bool result = false;

            switch (user.GetPermissionDistributionType(permission))
            {
            case PermissionDistributionType.None:
                result = false;
                break;

            case PermissionDistributionType.Personal:
                result = productionOrderPayment.ProductionOrder.Curator == user && user.Teams.SelectMany(x => x.ProductionOrders).Contains(productionOrderPayment.ProductionOrder);
                break;

            case PermissionDistributionType.Teams:
                result = user.Teams.SelectMany(x => x.ProductionOrders).Contains(productionOrderPayment.ProductionOrder);
                break;

            case PermissionDistributionType.All:
                result = true;
                break;
            }

            return(result);
        }
コード例 #4
0
        public void CheckPossibilityToChangePaymentCurrencyRate(ProductionOrderPayment productionOrderPayment, User user)
        {
            // права
            CheckPermissionToPerformOperation(productionOrderPayment, user, Permission.ProductionOrderPayment_Create_Edit);

            // сущность
            productionOrderPayment.CheckPossibilityToChangeCurrencyRate();
            productionOrderPayment.ProductionOrder.CheckPossibilityToEditPayment();
        }
コード例 #5
0
        public bool IsPossibilityToChangeCurrencyRate(ProductionOrderPayment productionOrderPayment, User user)
        {
            try
            {
                CheckPossibilityToChangePaymentCurrencyRate(productionOrderPayment, user);

                return(true);
            }
            catch
            {
                return(false);
            }
        }
コード例 #6
0
        /// <summary>
        /// Установка нового курса валюты у оплаты по заказу
        /// </summary>
        /// <param name="productionOrderPayment">Оплата</param>
        /// <param name="newCurrencyRate">Новый курс валюты (null - текущий)</param>
        /// <param name="user">Пользователь</param>
        public void ChangeProductionOrderPaymentCurrencyRate(ProductionOrderPayment productionOrderPayment, CurrencyRate newCurrencyRate, User user)
        {
            CheckPossibilityToChangePaymentCurrencyRate(productionOrderPayment, user);

            Currency     currency;
            CurrencyRate oldCurrencyRate;

            currencyService.GetCurrencyAndCurrencyRate(productionOrderPayment, out currency, out oldCurrencyRate);

            if (newCurrencyRate == null)
            {
                newCurrencyRate = currencyService.GetCurrentCurrencyRate(currency);
                ValidationUtils.NotNull(newCurrencyRate, "По выбранной валюте не существует текущего курса.");
            }

            if (newCurrencyRate != oldCurrencyRate)
            {
                productionOrderPayment.CurrencyRate = newCurrencyRate;
            }
        }