コード例 #1
0
		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);
		}
コード例 #2
0
		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;
		}