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