/// <summary>
        /// Is Used to Get or Create  Instance of Master ForecastLine
        /// </summary>
        /// <param name="ForeCast">MasterForecast</param>
        /// <param name="M_Product_ID">Product</param>
        /// <returns>Object</returns>
        public static MMasterForecastLine GetOrCreate(X_C_MasterForecast ForeCast, int M_Product_ID, int M_AttributeSetInstance_ID)
        {
            MMasterForecastLine retValue = null;
            String sql = "SELECT * FROM C_MasterForecastLine " +
                         " WHERE NVL(M_Product_ID,0) = " + M_Product_ID +
                         " AND NVL(C_MasterForecast_ID,0) =" + ForeCast.GetC_MasterForecast_ID();

            if (Env.IsModuleInstalled("VA073_"))
            {
                sql += " AND NVL(M_AttributeSetInstance_ID,0)=" + M_AttributeSetInstance_ID;
            }
            DataTable   dt  = null;
            IDataReader idr = null;

            try
            {
                idr = DB.ExecuteReader(sql, null, ForeCast.Get_Trx());
                dt  = new DataTable();
                dt.Load(idr);
                idr.Close();
                foreach (DataRow dr in dt.Rows)
                {
                    retValue = new MMasterForecastLine(ForeCast.GetCtx(), dr, ForeCast.Get_Trx());
                }
            }
            catch (Exception ex)
            {
                if (idr != null)
                {
                    idr.Close();
                }
                log.Log(Level.SEVERE, sql, ex);
            }
            finally
            {
                if (idr != null)
                {
                    idr.Close();
                }
                dt = null;
            }
            if (retValue == null)
            {
                retValue = new MMasterForecastLine(ForeCast, M_Product_ID, M_AttributeSetInstance_ID);
            }

            return(retValue);
        }
        /// <summary>
        /// Create new Master Forecast Line
        /// </summary>
        /// <param name="Parent">Master Forecast</param>
        /// <param name="M_Product_ID">Product</param>
        public MMasterForecastLine(X_C_MasterForecast Parent, int M_Product_ID, int M_AttributeSetInstance_ID)
            : base(Parent.GetCtx(), 0, Parent.Get_Trx())
        {
            string sql = "SELECT C_UOM_ID FROM M_Product WHERE M_Product_ID = " + M_Product_ID;

            SetC_UOM_ID(Util.GetValueOfInt(DB.ExecuteScalar(sql, null, null)));

            SetAD_Client_ID(Parent.GetAD_Client_ID());
            SetAD_Org_ID(Parent.GetAD_Org_ID());
            SetM_Product_ID(M_Product_ID);
            if (!Env.IsModuleInstalled("VA073_"))
            {
                SetProcessed(true);
            }
            else
            {
                Set_Value("M_AttributeSetInstance_ID", M_AttributeSetInstance_ID);
            }
        }