Пример #1
0
        public void CalculateTotalDeliveryVat_VatPercentage_NoOrderTotal_ZeroRowTotal_DontCrash()
        {
            var delivery = new DeliveryCarrier
            {
                DeliveryCost        = 1.672268908m,
                DeliveryCostWithVAT = 1.99m
            };

            var order = new OrderCarrier
            {
                OrderRows = new List <OrderRowCarrier>
                {
                    new OrderRowCarrier
                    {
                        UnitListPrice     = 0,
                        UnitCampaignPrice = 0m,
                        VATPercentage     = 0.2400m,
                        TotalPrice        = 0,
                        TotalVATAmount    = 0,
                        Quantity          = 1m,
                    }
                }
            };

            order.Deliveries.Add(delivery);

            sut.CalculateTotalDeliveryVat(order);
        }
        public void CalculateOverallVatPercentageBasedOnOrderRows_ZeroTotalRows_DontCrash()
        {
            var delivery = new DeliveryCarrier
            {
                DeliveryCost        = 1.672268908m,
                DeliveryCostWithVAT = 1.99m
            };

            var order = new OrderCarrier
            {
                OrderRows = new List <OrderRowCarrier>
                {
                    new OrderRowCarrier
                    {
                        UnitListPrice     = 0,
                        UnitCampaignPrice = 0,
                        VATPercentage     = 0.2400m,
                        TotalPrice        = 0,
                        TotalVATAmount    = 0,
                        Quantity          = 1m,
                    }
                }
            };

            order.Deliveries.Add(delivery);

            var sut = new OrderGrandTotalCalculator();

            sut.Calculate(order, null);
        }
        public static PaymentInfoRowCarrier Build(DeliveryCarrier delivery, string description, Guid paymentInfoID, int index)
        {
            var result = new PaymentInfoRowCarrier(delivery, description, paymentInfoID, index);

            result.TotalPrice     = Math.Abs(delivery.TotalDeliveryCost);
            result.TotalVatAmount = Math.Abs(delivery.TotalVATAmount);
            return(result);
        }
        public void Build_DeliveryCarrier(decimal totalPrice, decimal totalVat, decimal expectedPrice, decimal expectedVat)
        {
            var delivery = new DeliveryCarrier
            {
                // We assume the TotalPrice was rounded by OrderTotalCalculator
                TotalDeliveryCost = totalPrice,
                TotalVATAmount    = totalVat
            };
            var paymentInfoID = Guid.NewGuid();

            var result = PaymentInfoRowBuilder.Build(delivery, paymentInfoID, 1);

            Assert.Equal(expectedPrice, result.TotalPrice);
            Assert.Equal(expectedVat, result.TotalVatAmount);
        }
Пример #5
0
        private void AddDeliveryMethod(CheckoutViewModel model, Guid deliveryMethodId)
        {
            var             orderCarrier = _requestModelAccessor.RequestModel.Cart.OrderCarrier;
            DeliveryCarrier delivery;

            if (orderCarrier.Deliveries.Any())
            {
                delivery = orderCarrier.Deliveries.First();
            }
            else
            {
                delivery = new DeliveryCarrier {
                    ID = Guid.NewGuid(), Address = new AddressCarrier {
                        ID = Guid.NewGuid()
                    }
                };
                delivery.OrderID = orderCarrier.ID;
                var deliveryMethod = _moduleECommerce.DeliveryMethods.Get(deliveryMethodId, _moduleECommerce.AdminToken);
                delivery.DeliveryMethodID = deliveryMethod.ID;
            }

            delivery.Comments = string.Empty;

            if (!orderCarrier.Deliveries.Any(x => x.ID == delivery.ID))
            {
                orderCarrier.Deliveries.Add(delivery);
            }

            delivery.Address.MapFrom(model.CustomerDetails);
            if (model.IsBusinessCustomer && model.SelectedCompanyAddressId.HasValue)
            {
                delivery.Address.MapFrom(GetCompanyAddress(model.SelectedCompanyAddressId.Value));
                delivery.Address.MobilePhone      = model.CustomerDetails.PhoneNumber;
                delivery.Address.OrganizationName = model.CompanyName;
            }
            else
            {
                if (!string.IsNullOrWhiteSpace(model.AlternativeAddress?.FirstName) && !string.IsNullOrWhiteSpace(model.AlternativeAddress?.LastName) && !string.IsNullOrWhiteSpace(model.AlternativeAddress?.Address))
                {
                    delivery.Address.MapFrom(model.AlternativeAddress);
                }
            }

            foreach (var item in orderCarrier.OrderRows)
            {
                AddDeliveryRow(orderCarrier, delivery, item, _moduleECommerce.AdminToken);
            }
        }
Пример #6
0
        private void AddDeliveryRow(OrderCarrier orderCarrier, DeliveryCarrier deliveryCarrier, OrderRowCarrier orderRowCarrier, SecurityToken token)
        {
            if (orderRowCarrier == null)
            {
                return;
            }

            if (deliveryCarrier != null && !deliveryCarrier.CarrierState.IsMarkedForDeleting)
            {
                orderRowCarrier.DeliveryID = deliveryCarrier.ID;
            }
            else
            {
                AddDeliveryRow(orderCarrier, deliveryCarrier ?? new DeliveryCarrier(), orderRowCarrier, token);
            }
        }
Пример #7
0
        public void CalculateTotalDeliveryVat_VatPercentage_NoOrderRows_UseExistingVatPercentage()
        {
            var delivery = new DeliveryCarrier
            {
                DeliveryCost        = 1.672268908m,
                DeliveryCostWithVAT = 1.99m,
                VATPercentage       = 0.32m
            };

            var order = new OrderCarrier();

            order.Deliveries.Add(delivery);

            sut.CalculateTotalDeliveryVat(order);

            Assert.Equal(0.32m, delivery.VATPercentage);
        }
Пример #8
0
        public void CalculateTotalDeliveryVat_CalledByCalculateFromCarrier()
        {
            var delivery = new DeliveryCarrier
            {
                DeliveryCost        = 1.672268908m,
                DeliveryCostWithVAT = 1.99m,
                VATPercentage       = 0.19m
            };

            var order = new OrderCarrier();

            order.Deliveries.Add(delivery);
            order.Deliveries.Add(delivery);

            sut.CalculateFromCarrier(order, null);

            Assert.Equal(3.344m, order.TotalDeliveryCost);
            Assert.Equal(0.636m, order.TotalDeliveryCostVAT);
        }
        public void CalculateOverallVatPercentageBasedOnOrderRows()
        {
            var delivery = new DeliveryCarrier
            {
                DeliveryCost        = 1.672268908m,
                DeliveryCostWithVAT = 1.99m
            };

            var order = new OrderCarrier
            {
                OrderRows = new List <OrderRowCarrier>
                {
                    new OrderRowCarrier
                    {
                        UnitListPrice     = 185.48000000m,
                        UnitCampaignPrice = 0m,
                        VATPercentage     = 0.2400m,
                        TotalPrice        = 185.4800m,
                        TotalVATAmount    = 44.52m,
                        Quantity          = 1m,
                    },
                    new OrderRowCarrier
                    {
                        TotalPrice     = 100,
                        TotalVATAmount = 0,
                        CarrierState   =
                        {
                            IsMarkedForCreating = false,
                            IsMarkedForDeleting = true
                        }
                    }
                }
            };

            order.Deliveries.Add(delivery);

            var sut = new OrderGrandTotalCalculator();

            sut.Calculate(order, null);

            Assert.Equal(0.24m, order.OverallVatPercentage);
        }
Пример #10
0
        public void CalculateTotalDeliveryVat_VatPercentage_NoOrderTotal_FallbackToOrderRows()
        {
            var delivery = new DeliveryCarrier
            {
                DeliveryCost        = 1.672268908m,
                DeliveryCostWithVAT = 1.99m
            };

            var order = new OrderCarrier
            {
                OrderRows = new List <OrderRowCarrier>
                {
                    new OrderRowCarrier
                    {
                        UnitListPrice     = 185.48000000m,
                        UnitCampaignPrice = 0m,
                        VATPercentage     = 0.2400m,
                        TotalPrice        = 185.4800m,
                        TotalVATAmount    = 44.52m,
                        Quantity          = 1m,
                    },
                    new OrderRowCarrier
                    {
                        TotalPrice     = 100,
                        TotalVATAmount = 0,
                        CarrierState   =
                        {
                            IsMarkedForCreating = false,
                            IsMarkedForDeleting = true
                        }
                    }
                }
            };

            order.Deliveries.Add(delivery);

            sut.CalculateTotalDeliveryVat(order);

            Assert.Equal(0.24m, delivery.VATPercentage);
        }
Пример #11
0
        public void CalculateTotalDeliveryVat_SkipMarkedForDeletion()
        {
            var delivery = new DeliveryCarrier
            {
                DeliveryCost        = 1.672268908m,
                DeliveryCostWithVAT = 1.99m,
                VATPercentage       = 0.19m,
                CarrierState        =
                {
                    IsMarkedForCreating = false,
                    IsMarkedForDeleting = true
                }
            };

            var order = new OrderCarrier();

            order.Deliveries.Add(delivery);

            sut.CalculateTotalDeliveryVat(order);

            Assert.Equal(0, delivery.TotalDeliveryCost);
        }
 public override bool IsReturnedState(DeliveryCarrier delivery)
 {
     return(delivery.DeliveryStatus == (short)DeliveryState.Returned);
 }
 public override bool IsReadyToShipState(DeliveryCarrier delivery)
 {
     return(delivery.DeliveryStatus == (short)DeliveryState.ReadyToShip);
 }
 public override bool IsProcessingState(DeliveryCarrier delivery)
 {
     return(delivery.DeliveryStatus == (short)DeliveryState.Processing);
 }
 public override bool IsInitState(DeliveryCarrier delivery)
 {
     return(delivery.DeliveryStatus == (short)DeliveryState.Init);
 }
        private PaymentInfoRowCarrier Build(DeliveryCarrier delivery, Guid paymentInfoId, int index, Guid channelId)
        {
            var description = deliveryMethodService.GetPaymentInfoDescription(delivery.DeliveryMethodID, channelId);

            return(PaymentInfoRowBuilder.Build(delivery, description, paymentInfoId, index));
        }
 public static PaymentInfoRowCarrier Build(DeliveryCarrier delivery, Guid paymentInfoID, int index)
 {
     return(Build(delivery, null, paymentInfoID, index));
 }