/// <summary>
        /// Добавление разнесения платежного документа к данной сущности. Вызывается извне.
        /// Добавляет разнесение в коллекции обоих сущностей.
        /// Переопределяет и вызывает соответствующий метод в предке
        /// </summary>
        /// <param name="paymentDistribution">Добавляемое разнесение платежного документа</param>
        public override void AddDealPaymentDocumentDistribution(DealPaymentDocumentDistribution dealPaymentDocumentDistribution, bool updateSecondEntity = true)
        {
            dealPaymentDocumentDistribution.SetOrdinalNumber(Distributions);
            distributions.Add(dealPaymentDocumentDistribution);
            DistributedSum    += dealPaymentDocumentDistribution.Sum;
            IsFullyDistributed = UndistributedSum <= 0;
            ValidationUtils.Assert(UndistributedSum >= 0, "Невозможно распределить сумму, большую суммы оплаты.");

            if (updateSecondEntity)
            {
                dealPaymentDocumentDistribution.AddDealPaymentDocumentDistributionToDestination();
            }
        }
        /// <summary>
        /// Удаление разнесения платежного документа из данной сущности. Вызывается извне.
        /// Удаляет разнесение из коллекций обоих сущностей.
        /// Переопределяет и вызывает соответствующий метод в предке
        /// </summary>
        /// <param name="paymentDistribution"></param>
        public override void RemoveDealPaymentDocumentDistribution(DealPaymentDocumentDistribution dealPaymentDocumentDistribution, bool updateSecondEntity = true)
        {
            ValidationUtils.Assert(distributions.Contains(dealPaymentDocumentDistribution), "Расшифровка распределения корректировки не связана с данной корректировкой.");
            distributions.Remove(dealPaymentDocumentDistribution);
            dealPaymentDocumentDistribution.SourceDealPaymentDocument = null;
            DistributedSum    -= dealPaymentDocumentDistribution.Sum;
            IsFullyDistributed = UndistributedSum <= 0;
            ValidationUtils.Assert(UndistributedSum >= 0, "Невозможно распределить сумму, большую суммы корректировки.");

            if (updateSecondEntity)
            {
                dealPaymentDocumentDistribution.RemoveDealPaymentDocumentDistributionFromDestination();
            }
        }
Пример #3
0
        /// <summary>
        /// Добавление разнесения платежного документа к данной сущности. Вызывается извне.
        /// Добавляет разнесение в коллекции обоих сущностей.
        /// Переопределяет и вызывает соответствующий метод в предке
        /// </summary>
        /// <param name="paymentDistribution">Добавляемое разнесение платежного документа</param>
        public override void AddDealPaymentDocumentDistribution(DealPaymentDocumentDistribution dealPaymentDocumentDistribution, bool updateSecondEntity = true)
        {
            ValidationUtils.Assert(dealPaymentDocumentDistribution.Is <DealPaymentDocumentDistributionToDealPaymentDocument>(),
                                   "Неверный тип разнесения платежного документа.");

            dealPaymentDocumentDistribution.SetOrdinalNumber(Distributions);
            concreteDistributions.Add(dealPaymentDocumentDistribution.As <DealPaymentDocumentDistributionToDealPaymentDocument>());
            DistributedSum    += dealPaymentDocumentDistribution.Sum;
            IsFullyDistributed = UndistributedSum <= 0;
            ValidationUtils.Assert(UndistributedSum >= 0, "Невозможно распределить сумму, большую суммы оплаты.");

            if (updateSecondEntity)
            {
                dealPaymentDocumentDistribution.AddDealPaymentDocumentDistributionToSource();
            }
        }
Пример #4
0
        /// <summary>
        /// Удаление разнесения платежного документа из данной сущности. Вызывается извне.
        /// Удаляет разнесение из коллекций обоих сущностей.
        /// Переопределяет и вызывает соответствующий метод в предке
        /// </summary>
        /// <param name="paymentDistribution"></param>
        public override void RemoveDealPaymentDocumentDistribution(DealPaymentDocumentDistribution dealPaymentDocumentDistribution, bool updateSecondEntity = true)
        {
            ValidationUtils.Assert(dealPaymentDocumentDistribution.Is <DealPaymentDocumentDistributionToDealPaymentDocument>(),
                                   "Неверный тип разнесения платежного документа.");

            ValidationUtils.Assert(concreteDistributions.Contains(dealPaymentDocumentDistribution.As <DealPaymentDocumentDistributionToDealPaymentDocument>()),
                                   "Расшифровка распределения корректировки не связана с данной корректировкой.");
            concreteDistributions.Remove(dealPaymentDocumentDistribution.As <DealPaymentDocumentDistributionToDealPaymentDocument>());
            dealPaymentDocumentDistribution.As <DealPaymentDocumentDistributionToDealPaymentDocument>().DestinationDealPaymentDocument = null;
            DistributedSum    -= dealPaymentDocumentDistribution.Sum;
            IsFullyDistributed = UndistributedSum <= 0;
            ValidationUtils.Assert(UndistributedSum >= 0, "Невозможно распределить сумму, большую суммы корректировки.");

            if (updateSecondEntity)
            {
                dealPaymentDocumentDistribution.RemoveDealPaymentDocumentDistributionFromSource();
            }
        }
Пример #5
0
 /// <summary>
 /// Удаление разнесения платежного документа из данной сущности. Переопределяется в потомках
 /// </summary>
 /// <param name="paymentDistribution">Удаляемое разнесение платежного документа</param>
 /// <param name="updateSecondEntity">Удалять ли разнесение из коллекции второй сущности, с которой данная сущность связана этим разнесением</param>
 public abstract void RemoveDealPaymentDocumentDistribution(DealPaymentDocumentDistribution dealPaymentDocumentDistribution, bool updateSecondEntity = true);