Exemplo n.º 1
0
        /// <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();
        }
Exemplo n.º 2
0
 public MovementWaybillRow(ReceiptWaybillRow receiptWaybillRow, decimal movingCount, ValueAddedTax valueAddedTax)
     : this()
 {
     ReceiptWaybillRow       = receiptWaybillRow; // Должно идти перед присваиванием количества, т.к. задает допустимое число его знаков после запятой
     MovingCount             = movingCount;
     this.valueAddedTax      = valueAddedTax;
     outgoingWaybillRowState = OutgoingWaybillRowState.Undefined;
 }
Exemplo n.º 3
0
 /// <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);
 }
Exemplo n.º 4
0
 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;
 }
Exemplo n.º 5
0
 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();
 }
Exemplo n.º 6
0
 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;
 }
Exemplo n.º 7
0
        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;
        }
Exemplo n.º 8
0
        /// <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;
        }
Exemplo n.º 9
0
 /// <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;
 }
Exemplo n.º 10
0
 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();
 }