public void Can_run_activity_calculatetaxtotals() { var orderGroup = CreateOrderConstant(); var catrepository = new Mock<ICatalogRepository>(); var items = new List<Item>(); orderGroup.OrderForms[0].Shipments[0].ShipmentItems.ToList().ForEach(item => items.Add(new Product { ItemId = item.LineItem.CatalogItemId, TaxCategory = "472b9809-3530-4d95-9886-cbddcaa0b72e" })); orderGroup.OrderForms[0].Shipments[0].ShippingCost = 10; catrepository.Setup(x => x.Items).Returns(() => items.ToArray().AsQueryable()); catrepository.SetupAllProperties(); var taxrepository = new Mock<ITaxRepository>(); var taxes = new[] { new Tax { Name = "US Shipment tax", TaxType = (int)TaxTypes.ShippingTax, SortOrder = 1}, new Tax { Name = "US Sales tax", TaxType = (int)TaxTypes.SalesTax, SortOrder = 1} }; var jurisdiction = new Jurisdiction { Code = "VAT", CountryCode = "USA", JurisdictionType = (int)JurisdictionTypes.All }; var jurisdictionGroup = new JurisdictionGroup { DisplayName = "USA VAT", Code = "USAVAT", JurisdictionType = (int)JurisdictionTypes.All }; var jurisdictionRel = new JurisdictionRelation { JurisdictionGroup = jurisdictionGroup, JurisdictionGroupId = jurisdictionGroup.JurisdictionGroupId, Jurisdiction = jurisdiction, JurisdictionId = jurisdiction.JurisdictionId }; jurisdictionGroup.JurisdictionRelations.Add(jurisdictionRel); taxes[0].TaxValues.Add(new TaxValue() { AffectiveDate = new DateTime(2013, 6, 1), Percentage = 18, TaxCategory = "472b9809-3530-4d95-9886-cbddcaa0b72e", TaxId = taxes[0].TaxId, Tax = taxes[0], JurisdictionGroup = jurisdictionGroup, JurisdictionGroupId = jurisdictionGroup.JurisdictionGroupId }); taxes[1].TaxValues.Add(new TaxValue() { AffectiveDate = new DateTime(2013, 6, 1), Percentage = 5, TaxCategory = "472b9809-3530-4d95-9886-cbddcaa0b72e", TaxId = taxes[1].TaxId, Tax = taxes[1], JurisdictionGroup = jurisdictionGroup, JurisdictionGroupId = jurisdictionGroup.JurisdictionGroupId }); taxrepository.Setup(x => x.Taxes).Returns(taxes.AsQueryable); taxrepository.SetupAllProperties(); var activity = new CalculateTaxActivity(catrepository.Object, taxrepository.Object, CacheRepository); var result = InvokeActivity(activity, orderGroup); var order = result.OrderGroup; // now check totals // Order totals Assert.Equal(order.TaxTotal, 660.24M); Assert.Equal(order.OrderForms[0].Shipments[0].ItemTaxTotal, 609.84M); Assert.Equal(order.OrderForms[0].Shipments[0].ShippingTaxTotal, 12.6M); }
public override string Import(string catalogId, string propertySetId, ImportItem[] systemValues, ImportItem[] customValues, IRepository repository) { var _error = string.Empty; _repository = (IOrderRepository)repository; var action = GetAction(systemValues.First(x => x.Name == "Action").Value); switch (action) { case ImportAction.Insert: var itemI = systemValues.FirstOrDefault(y => y.Name == "Code"); if (itemI != null) { var originalItem = _repository.JurisdictionGroups.Where(x => x.Code == itemI.Value).FirstOrDefault(); if (originalItem == null) { var addItem = InitializeItem(null, systemValues); _repository.Add(addItem); originalItem = addItem; } var jurisdictionCode = systemValues.First(x => x.Name == "JurisdictionCode").Value; if (jurisdictionCode != null) { var jItem = _repository.Jurisdictions.Where(x => x.Code == jurisdictionCode).SingleOrDefault(); if (jItem != null) { var relation = new JurisdictionRelation() { JurisdictionId = jItem.JurisdictionId, JurisdictionGroupId = originalItem.JurisdictionGroupId }; _repository.Add(relation); } } } break; case ImportAction.InsertAndReplace: var itemR = systemValues.FirstOrDefault(y => y.Name == "Code"); if (itemR != null) { var originalItem = _repository.JurisdictionGroups.Where(x => x.Code == itemR.Value).SingleOrDefault(); if (originalItem != null) _repository.Remove(originalItem); } var replaceItem = InitializeItem(null, systemValues); _repository.Add(replaceItem); break; case ImportAction.Update: var itemU = systemValues.FirstOrDefault(y => y.Name == "JurisdictionCode"); if (itemU != null) { var origItem = _repository.JurisdictionGroups.Where(x => x.Code == itemU.Value).SingleOrDefault(); if (origItem != null) { InitializeItem(origItem, systemValues); _repository.Update(origItem); } } break; case ImportAction.Delete: var itemD = systemValues.FirstOrDefault(y => y.Name == "JurisdictionCode"); if (itemD != null) { var deleteItem = _repository.JurisdictionGroups.Where(x => x.Code == itemD.Value).SingleOrDefault(); if (deleteItem != null) _repository.Remove(deleteItem); } break; } return _error; }