/// <summary> /// Смена поставщика /// </summary> /// <param name="provider">Новый поставщик</param> /// <param name="contract">Новый договор</param> public virtual void ChangeProvider(Provider provider, ProviderContract contract) { ValidationUtils.Assert(!IsCreatedFromProductionOrderBatch, "Данный метод не подходит для накладной, созданной по партии заказа."); ValidationUtils.NotNull(provider, "Поставщик не указан."); ValidationUtils.Assert(contract == null || provider.Contracts.Contains(contract), "Указан договор, не связанный с поставщиком."); Provider = provider; ProviderContract = contract; }
/// <summary> /// Убрать связь договора с поставщиком /// </summary> /// <param name="contract">Договор с поставщиком</param> public virtual void RemoveProviderContract(ProviderContract contract) { if (!contracts.Contains(contract)) { throw new Exception("Данный договор не содержится в списке договоров поставщика. Возможно, он был удален."); } contracts.Remove(contract); if (contract.Contractors.Contains(this)) { contract.RemoveContractor(this); } }
/// <summary> /// Связать договор с поставщиком /// </summary> /// <param name="contract">Договор с поставщиком</param> public virtual void AddProviderContract(ProviderContract contract) { if (contracts.Contains(contract)) { throw new Exception("Данный договор уже содержится в списке договоров поставщика."); } contracts.Add(contract); if (!contract.Contractors.Contains(this)) { contract.AddContractor(this); } }
/// <summary> /// Конструктор для обычной приходной накладной (не связанной с партией заказа) /// </summary> /// <param name="number">Номер</param> /// <param name="date">Дата</param> /// <param name="receiptStorage">Место хранения</param> /// <param name="accountOrganization">Собственная организация</param> /// <param name="provider">Поставщик</param> /// <param name="pendingSum">Ожидаемая сумма накладной</param> /// <param name="pendingDiscountSum">Ожидаемая сумма скидки</param> /// <param name="pendingValueAddedTax">Ожидаемая НДС</param> /// <param name="providerContract">Договор с поставщиком</param> /// <param name="curator">Куратор</param> public ReceiptWaybill(string number, DateTime date, Storage receiptStorage, AccountOrganization accountOrganization, Provider provider, decimal pendingSum, decimal pendingDiscountSum, ValueAddedTax pendingValueAddedTax, ProviderContract providerContract, string customsDeclarationNumber, User curator, User createdBy, DateTime creationDate) : this(number, date, receiptStorage, accountOrganization, pendingSum, pendingDiscountSum, pendingValueAddedTax, customsDeclarationNumber, curator, createdBy, creationDate) { ValidationUtils.NotNull(provider, "Необходимо указать поставщика."); Provider = provider; ValidationUtils.NotNull(providerContract, "Необходимо указать договор."); ChangeProvider(provider, providerContract); }