public static SaleProduct BuildSaleProduct(ReturnableType returnableType)
 {
     SaleProduct p = Builder<SaleProduct>.CreateNew()
          .WithConstructor(() => new SaleProduct(Guid.NewGuid(), DateTime.Now, DateTime.Now, EntityStatus.Active, new List<ProductPricing> { BuildProductPricing(Guid.NewGuid()) }))
          .With(n => n.Flavour = BuildProductFlavour())
          .With(n => n.Brand = BuildProductBrand(Guid.NewGuid()))
          .With(n => n.ProductType = BuildProductType())
          .With(n => n.Packaging = BuildProductPackaging())
          .With(n => n.PackagingType = BuildProductPackagingType())
          .With(n=>n.ReturnableType=returnableType)
          .With(n=>n.VATClass=BuildVatClass())
          .With(n=>n.ReturnableProduct=BuildReturnableProduct(ReturnableType.GenericReturnable))
         .Build();
     return p;
 }
        protected Guid AddReturnableProduct(string ProductCode, string Description, Guid FlavourId, Guid BrandId, Guid PackageId, Guid PackageTypeId, Guid ProductTypeId, int DomainTypeId, ReturnableType returnableType, Guid vatClassId, int capacity, Guid returnableProductId,decimal exfactoryPrice)
        {
            ReturnableProduct p = _productFactory.CreateReturnableProduct(Guid.NewGuid());
            p.Brand = _productBrandRepository.GetById(BrandId);
            p.Description = Description;
            p.Flavour = _productFlavourRepository.GetById(FlavourId);
            p.ExFactoryPrice = exfactoryPrice;

            if (PackageId != Guid.Empty)
            {
                p.Packaging = _productPackagingRepository.GetById(PackageId);
            }            
            p.PackagingType = _productPackagingTypeRepository.GetById(PackageTypeId);
            p.ProductCode = ProductCode;
            p.Capacity = capacity;
            p.ReturnableType = returnableType;
            p.VATClass = _vatClassRepository.GetById(vatClassId);
            if (returnableProductId != Guid.Empty)
            {
                p.ReturnAbleProduct = _productRepository.GetById(returnableProductId) as ReturnableProduct;
            }
            Guid test = _productRepository.Save(p);
            _productRepository.GetById(test);
            return test;
        }
 public static ConsolidatedProduct BuildConsolidatedProduct(ReturnableType returnableType)
 {
     ConsolidatedProduct c = Builder<ConsolidatedProduct>.CreateNew()
          .WithConstructor(() => new ConsolidatedProduct(Guid.NewGuid(), DateTime.Now, DateTime.Now, EntityStatus.Active, new List<ProductPricing> { BuildProductPricing(Guid.NewGuid()) },
         new List<ConsolidatedProduct.ProductDetail> { BuildConsolidatedProductProductDetail() }
         ))
          .With(n => n.Brand = BuildProductBrand(Guid.NewGuid()))
          .With(n => n.Packaging = BuildProductPackaging())
          .With(n => n.PackagingType = BuildProductPackagingType())
          .With(n=>n.ReturnableType=returnableType)
         .Build();
     return c;
 }