Exemplo n.º 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);
        }
Exemplo n.º 2
0
        public Guid AddItem(Product product, float amount)
        {
            if (IsDeleted)
            {
                throw new InvalidOperationException("Order is deleted.");
            }

            if (ProviderOrderItems == null)
            {
                ProviderOrderItems = new Collection <ProviderOrderItem>();
            }

            var providerOrderItem = ProviderOrderItem.MakeProviderOrderItem(this, product, amount);

            ProviderOrderItems.Add(providerOrderItem);

            return(providerOrderItem.Id);
        }
Exemplo n.º 3
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);
        }