//---------------------------------------------------------------------------------------------
// This file was AUTO-GENERATED by "EF Domain Objects" Xomega.Net generator.
//
// Manual CHANGES to this file WILL BE LOST when the code is regenerated.
//---------------------------------------------------------------------------------------------

using System;

namespace AdventureWorks.Services.Entities
{
    ///<summary>
    /// Products sold or used in the manfacturing of sold products.
    ///</summary>
    public partial class Product
    {
        public Product()
        {
        }

        #region Properties

        public int ProductId  { get; set; }

        ///<summary>
        /// Name of the product.
        ///</summary>
        public string Name  { get; set; }

        ///<summary>
        /// Unique product identification number.
        ///</summary>
        public string ProductNumber  { get; set; }

        ///<summary>
        /// 0 = Product is purchased, 1 = Product is manufactured in-house.
        ///</summary>
        public bool MakeFlag  { get; set; }

        ///<summary>
        /// 0 = Product is not a salable item. 1 = Product is salable.
        ///</summary>
        public bool FinishedGoodsFlag  { get; set; }

        ///<summary>
        /// Product color.
        ///</summary>
        public string Color  { get; set; }

        ///<summary>
        /// Minimum inventory quantity. 
        ///</summary>
        public short SafetyStockLevel  { get; set; }

        ///<summary>
        /// Inventory level that triggers a purchase order or work order. 
        ///</summary>
        public short ReorderPoint  { get; set; }

        ///<summary>
        /// Standard cost of the product.
        ///</summary>
        public decimal StandardCost  { get; set; }

        ///<summary>
        /// Selling price.
        ///</summary>
        public decimal ListPrice  { get; set; }

        ///<summary>
        /// Product size.
        ///</summary>
        public string Size  { get; set; }

        ///<summary>
        /// Unit of measure for Size column.
        ///</summary>
        public string SizeUnitMeasureCode  { get; set; }

        ///<summary>
        /// Unit of measure for Weight column.
        ///</summary>
        public string WeightUnitMeasureCode  { get; set; }

        ///<summary>
        /// Product weight.
        ///</summary>
        public decimal? Weight  { get; set; }

        ///<summary>
        /// Number of days required to manufacture the product.
        ///</summary>
        public int DaysToManufacture  { get; set; }

        ///<summary>
        /// R = Road, M = Mountain, T = Touring, S = Standard
        ///</summary>
        public string ProductLine  { get; set; }

        ///<summary>
        /// H = High, M = Medium, L = Low
        ///</summary>
        public string Class  { get; set; }

        ///<summary>
        /// W = Womens, M = Mens, U = Universal
        ///</summary>
        public string Style  { get; set; }

        ///<summary>
        /// Product is a member of this product subcategory. Foreign key to ProductSubCategory.ProductSubCategoryID. 
        ///</summary>
        public int? ProductSubcategoryId  { get; set; }

        ///<summary>
        /// Product is a member of this product model. Foreign key to ProductModel.ProductModelID.
        ///</summary>
        public int? ProductModelId  { get; set; }

        ///<summary>
        /// Date the product was available for sale.
        ///</summary>
        public DateTime SellStartDate  { get; set; }

        ///<summary>
        /// Date the product was no longer available for sale.
        ///</summary>
        public DateTime? SellEndDate  { get; set; }

        ///<summary>
        /// Date the product was discontinued.
        ///</summary>
        public DateTime? DiscontinuedDate  { get; set; }

        ///<summary>
        /// ROWGUIDCOL number uniquely identifying the record. Used to support a merge replication sample.
        ///</summary>
        public Guid Rowguid  { get; set; }

        ///<summary>
        /// Date and time the record was last updated.
        ///</summary>
        public DateTime ModifiedDate  { get; set; }

        #endregion

        #region Navigation Properties

        ///<summary>
        /// UnitMeasure object referenced by the field SizeUnitMeasureCode.
        ///</summary>
        public virtual UnitMeasure SizeUnitMeasureCodeObject { get; set; }

        ///<summary>
        /// UnitMeasure object referenced by the field WeightUnitMeasureCode.
        ///</summary>
        public virtual UnitMeasure WeightUnitMeasureCodeObject { get; set; }

        ///<summary>
        /// ProductSubcategory object referenced by the field ProductSubcategoryId.
        ///</summary>
        public virtual ProductSubcategory ProductSubcategoryObject { get; set; }

        ///<summary>
        /// ProductModel object referenced by the field ProductModelId.
        ///</summary>
        public virtual ProductModel ProductModelObject { get; set; }

        #endregion
    }
}