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); }
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); } }
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); } }
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); }
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); }
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); }
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)); }