/// <summary> /// Базовый конструктор для создания приходной накладной /// </summary> /// <param name="number">Номер</param> /// <param name="date">Дата</param> /// <param name="receiptStorage">Место хранения</param> /// <param name="accountOrganization">Собственная организация</param> /// <param name="pendingSum">Ожидаемая сумма накладной</param> /// <param name="pendingDiscountSum">Ожидаемая сумма скидки</param> /// <param name="pendingValueAddedTax">Ожидаемая НДС</param> /// <param name="curator">Куратор</param> private ReceiptWaybill(string number, DateTime date, Storage receiptStorage, AccountOrganization accountOrganization, decimal pendingSum, decimal pendingDiscountSum, ValueAddedTax pendingValueAddedTax, string customsDeclarationNumber, User curator, User createdBy, DateTime creationDate) : base(WaybillType.ReceiptWaybill, number, date, curator, createdBy, creationDate) { ValidationUtils.NotNull(receiptStorage, "Необходимо указать место хранения."); ReceiptStorage = receiptStorage; ValidationUtils.NotNull(accountOrganization, "Необходимо указать организацию."); AccountOrganization = accountOrganization; ValidationUtils.NotNull(pendingValueAddedTax, "Необходимо указать ставку НДС."); PendingValueAddedTax = pendingValueAddedTax; ValidationUtils.CheckDecimalScale(pendingSum, 2, "Общая сумма по накладной должна иметь не более 2 знаков после запятой."); PendingSum = pendingSum; PendingDiscountSum = pendingDiscountSum; State = ReceiptWaybillState.New; if (String.IsNullOrEmpty(customsDeclarationNumber)) { CustomsDeclarationNumber = String.Empty; IsCustomsDeclarationNumberFromReceiptWaybill = false; } else { CustomsDeclarationNumber = customsDeclarationNumber; IsCustomsDeclarationNumberFromReceiptWaybill = true; } ProviderNumber = String.Empty; ProviderInvoiceNumber = String.Empty; CheckPendingDiscountSum(); }
public MovementWaybillRow(ReceiptWaybillRow receiptWaybillRow, decimal movingCount, ValueAddedTax valueAddedTax) : this() { ReceiptWaybillRow = receiptWaybillRow; // Должно идти перед присваиванием количества, т.к. задает допустимое число его знаков после запятой MovingCount = movingCount; this.valueAddedTax = valueAddedTax; outgoingWaybillRowState = OutgoingWaybillRowState.Undefined; }
/// <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); }
private ReceiptWaybillRow(Article article, decimal pendingCount, ValueAddedTax valueAddedTax, int ordinalNumber = int.MaxValue) : this() { ValidationUtils.Assert(pendingCount >= 0M, "Невозможно создать партию с отрицательным ожидаемым количеством."); Article = article; // Должно идти перед присваиванием количества, т.к. задает допустимое число его знаков после запятой PendingValueAddedTax = valueAddedTax; PendingCount = pendingCount; OrdinalNumber = ordinalNumber; }
public ReceiptWaybillRow(Article article, decimal pendingCount, ValueAddedTax valueAddedTax, decimal purchaseCost) : this(article, pendingCount, valueAddedTax) { ValidationUtils.Assert(pendingCount > 0, "Количество товара должно быть больше 0."); ValidationUtils.Assert(purchaseCost >= 0M, "Невозможно создать партию с отрицательной закупочной стоимостью."); InitialPurchaseCost = purchaseCost; PurchaseCost = purchaseCost; RecalculatePendingSum(); }
public ChangeOwnerWaybill(string number, DateTime date, Storage storage, AccountOrganization sender, AccountOrganization recipient, ValueAddedTax valueAddedTax, User curator, User createdBy, DateTime creationDate) : base(WaybillType.ChangeOwnerWaybill, number, date, curator, createdBy, creationDate) { Storage = storage; Sender = sender; Recipient = recipient; ValueAddedTax = valueAddedTax; State = ChangeOwnerWaybillState.Draft; }
public ExpenditureWaybillRow(ReceiptWaybillRow receiptWaybillRow, decimal sellingCount, ValueAddedTax valueAddedTax) : this() { ValidationUtils.NotNull(receiptWaybillRow, "Не указана партия товара."); ValidationUtils.Assert(sellingCount > 0, "Количество реализуемого товара должно быть положительным числом."); outgoingWaybillRowState = OutgoingWaybillRowState.Undefined; ReceiptWaybillRow = receiptWaybillRow; // Должно идти перед присваиванием количества, т.к. задает допустимое число его знаков после запятой SellingCount = sellingCount; ValueAddedTax = valueAddedTax; }
/// <summary> /// Конструктор /// </summary> public MovementWaybill(string number, DateTime date, Storage senderStorage, AccountOrganization sender, Storage recipientStorage, AccountOrganization recipient, ValueAddedTax valueAddedTax, User curator, User createdBy, DateTime creationDate) : base(WaybillType.MovementWaybill, number, date, curator, createdBy, creationDate) { ValidationUtils.Assert(senderStorage != recipientStorage, "Места хранения отправителя и получателя не могут совпадать."); ValidationUtils.Assert(valueAddedTax.Value == 0M || sender != recipient, "Накладная, в которой организации-отправитель и получатель совпадают, не может иметь ненулевой НДС."); SenderStorage = senderStorage; Sender = sender; RecipientStorage = recipientStorage; Recipient = recipient; ValueAddedTax = valueAddedTax; State = MovementWaybillState.Draft; }
/// <summary> /// Конструктор для создания приходной накладной, связанной с партией заказа /// </summary> /// <param name="productionOrderBatch">Партия заказа</param> /// <param name="number">Номер</param> /// <param name="date">Дата</param> /// <param name="pendingValueAddedTax">Ожидаемая НДС</param> /// <param name="curator">Куратор</param> public ReceiptWaybill(ProductionOrderBatch productionOrderBatch, string number, DateTime date, ValueAddedTax pendingValueAddedTax, string customsDeclarationNumber, User curator, User createdBy, DateTime creationDate) : this(number, date, productionOrderBatch.ProductionOrder.Storage, productionOrderBatch.ProductionOrder.Contract.AccountOrganization, 0, 0, pendingValueAddedTax, customsDeclarationNumber, curator, createdBy, creationDate) { ValidationUtils.NotNull(productionOrderBatch, "Необходимо указать партию заказа."); ValidationUtils.Assert(productionOrderBatch.ReceiptWaybill == null, "Указанная партия заказа уже связана с приходной накладной."); ProductionOrderBatch = productionOrderBatch; ProductionOrderBatch.ReceiptWaybill = this; }
public ReceiptWaybillRow(Article article, decimal pendingCount, decimal pendingSum, ValueAddedTax valueAddedTax, int ordinalNumber = int.MaxValue) : this(article, pendingCount, valueAddedTax, ordinalNumber) { ValidationUtils.Assert(pendingSum >= 0M, "Невозможно создать партию с отрицательной ожидаемой суммой."); PendingSum = pendingSum; RecalculateInitialPurchaseCost(); PurchaseCost = initialPurchaseCost; RecalculatePendingSum(); }