示例#1
0
        public static ProviderDeposit MakeProviderDeposit(ProviderOrderItem providerOrderItem, float amount, DepositMovement depositMovement)
        {
            if (providerOrderItem == null)
            {
                throw new ArgumentNullException("Provider order item must have a value.");
            }

            if (amount <= 0)
            {
                throw new ArgumentException("Amount must be larger than 0.");
            }

            var deposit = new ProviderDeposit();

            deposit.Amount = amount;

            deposit.RegisterDate        = DateTime.Now;
            deposit.MovementType        = depositMovement;
            deposit.ProviderOrderItemId = providerOrderItem.Id;
            deposit.ProviderOrderItem   = providerOrderItem;
            deposit.Sku = providerOrderItem.Product.Sku;

            deposit.ProviderOrderItem.Product.UpdateAmount(depositMovement == DepositMovement.In ? amount : -amount);

            return(deposit);
        }
示例#2
0
        public override void Delete()
        {
            if (IsDeleted)
            {
                throw new InvalidOperationException("Order item is already deleted.");
            }
            Console.WriteLine("\n\n\n\n\n\n\n\n");
            var deletedMovementItem = ProviderDeposit.MakeProviderDeposit(this, Amount, DepositMovement.Out);

            Console.WriteLine("\n\n\n\n\n\n\n\n");
            base.Delete();
        }
示例#3
0
        public void ChangeAmount(float amount)
        {
            if (IsDeleted)
            {
                throw new InvalidOperationException("Order item is deleted.");
            }

            if (amount <= 0)
            {
                throw new ArgumentException("Amount must be larger than 0.");
            }

            if (Amount == amount)
            {
                throw new ArgumentException("Amount can't be the same as before.");
            }

            var difference   = amount - Amount;
            var movementType = DepositMovement.In;

            if (difference < 0)
            {
                difference   = -difference;
                movementType = DepositMovement.Out;
            }

            Amount = amount;
            var oldValue = TotalValue;

            TotalValue = Price * Amount;

            var deposit = ProviderDeposit.MakeProviderDeposit(this, difference, movementType);

            Deposits.Add(deposit);

            difference = TotalValue - oldValue;
            ProviderOrder.UpdateTotalValue(difference);
        }
示例#4
0
        public static ProviderOrderItem MakeProviderOrderItem(ProviderOrder providerOrder, Product product, float amount)
        {
            if (providerOrder == null)
            {
                throw new ArgumentNullException("Provider order must have a value.");
            }

            if (product == null)
            {
                throw new ArgumentNullException("Product must have a value.");
            }

            if (amount <= 0)
            {
                throw new ArgumentException("Amount must be larger than 0.");
            }

            var providerOrderItem = new ProviderOrderItem();

            providerOrderItem.ProviderOrderId = providerOrder.Id;
            providerOrderItem.ProviderOrder   = providerOrder;
            providerOrderItem.ProductId       = product.Id;
            providerOrderItem.Product         = product;
            providerOrderItem.Amount          = amount;
            providerOrderItem.Price           = product.Price;
            providerOrderItem.TotalValue      = providerOrderItem.Price * providerOrderItem.Amount;
            providerOrderItem.Deposits        = new Collection <ProviderDeposit>();

            providerOrder.UpdateTotalValue(providerOrderItem.TotalValue);

            var deposit = ProviderDeposit.MakeProviderDeposit(providerOrderItem, amount, DepositMovement.In);

            providerOrderItem.Deposits.Add(deposit);

            return(providerOrderItem);
        }